[bug] Array#unshift() zero arguments

irb
irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in unshift’
from (irb):2
irb(main):003:0> .push(*)
=>

I am just trying out the brand new Ruby-1.8.0-preview3.

will the behavier of Array#unshift be fixed ?

Partial solution:

module ArrayZero
def new_unshift(*ary)
old_unshift(*ary) unless ary.empty?
end
def self.append_features(klass)
super
klass.instance_eval do
alias_method :old_unshift, :unshift
alias_method :unshift, :new_unshift
end
end
end

class Array
include ArrayZero
end

···


Simon Strandgaard

This results in an error in 1.6.7, too, though the message is different.

Did you expect 1.8 to work diffently than 1.6?

Quoteing 0bz63fz3m1qt3001@sneakemail.com, on Tue, Jun 24, 2003 at 01:39:15AM +0900:

irb
irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in unshift’
from (irb):2
irb(main):003:0> .push(*)
=>

[ensemble] ~ $ ruby --version
ruby 1.6.7 (2002-03-01) [powerpc-darwin6.0]
[ensemble] ~ $ irb
irb(main):001:0> .unshift()
ArgumentError: wrong # of arguments(at least 1)
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) ArgumentError: wrong # of arguments(at least 1) from (irb):2:in unshift’
from (irb):2
irb(main):003:0> ^D

Sam

Hi,

···

At Tue, 24 Jun 2003 01:39:15 +0900, Simon Strandgaard wrote:

irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in unshift’
from (irb):2
irb(main):003:0> .push(*)
=>

Also unshifting without arguments clobbers last element.

$ ruby -e ‘p [1].unshift()’
[nil]


Nobu Nakada

I am curious, are these issues about #unshift being resolved ?

···

On Tue, 24 Jun 2003 03:40:25 +0900, nobu.nokad wrote:

Hi,

At Tue, 24 Jun 2003 01:39:15 +0900, > Simon Strandgaard wrote:

irb(main):001:0> .unshift()
IndexError: index -1 out of array
from (irb):1:in unshift' from (irb):1 irb(main):002:0> [].unshift(*[]) IndexError: index -1 out of array from (irb):2:in unshift’
from (irb):2
irb(main):003:0> .push(*)
=>

Also unshifting without arguments clobbers last element.

$ ruby -e ‘p [1].unshift()’
[nil]


Simon Strandgaard

Also unshifting without arguments clobbers last element.

$ ruby -e ‘p [1].unshift()’
[nil]

I am curious, are these issues about #unshift being resolved ?

Fixed.

···

In message “Re: [bug] Array#unshift() zero arguments” on 03/07/10, “Simon Strandgaard” 0bz63fz3m1qt3001@sneakemail.com writes:

Tue Jun 24 02:40:09 2003 Nobuyoshi Nakada nobu.nokada@softhome.net

* array.c (rb_ary_unshift_m): need to check number of arguments.
  [ruby-talk:74189]


matz.

Great… Thanks Nobu+Matz :slight_smile:

···

On Thu, 10 Jul 2003 06:28:32 +0900, Yukihiro Matsumoto wrote:

In message “Re: [bug] Array#unshift() zero arguments” > on 03/07/10, “Simon Strandgaard” 0bz63fz3m1qt3001@sneakemail.com writes:

Also unshifting without arguments clobbers last element.

$ ruby -e ‘p [1].unshift()’
[nil]

I am curious, are these issues about #unshift being resolved ?

Fixed.

Tue Jun 24 02:40:09 2003 Nobuyoshi Nakada nobu.nokada@softhome.net

  • array.c (rb_ary_unshift_m): need to check number of arguments.
    [ruby-talk:74189]


Simon Strandgaard