What's going on here? (weird Ruby 1.9 incompatibility)

class A
def a
‘yay’
end
end

class B
def initialize(&meth)
class << self; self; end.send(:define_method, :b, &meth)
end
end

b = B.new &A.new.method(:a)
p b.b

Ruby 1.8 prints:
“yay”

Ruby 1.9 complains (on the p b.b line):
14:in `’: wrong number of arguments (1 for 0) (ArgumentError)

On Sat, Mar 29, 2008 at 12:08 PM, Tony A. [email protected] wrote:

Ruby 1.8 prints:
“yay”

Ruby 1.9 complains (on the p b.b line):
14:in `': wrong number of arguments (1 for 0) (ArgumentError)

I tried changing A to have the following definition:

class A
def a(*args)
args
end
end

Now:

Ruby 1.8:
[]

or if you call b.b(1,2,3):
[1,2,3]

Ruby 1.9:
[nil]

or if you call b.b(1,2,3):
[1]

Is this a bug?

On Sat, Mar 29, 2008 at 7:08 PM, Tony A. [email protected] wrote:

end

Tony A.
medioh.com

I added the output of the arity of the methods, looks very much like a
bug to me, are you familiar with the Bug Reporting process?

ma = A.new.method(:a) p ma.arity # --> 0 b = B.new( &ma ) mb = b.method(:b) p mb.arity # --> 0

p b.b # bombs

Cheers
Robert

http://ruby-smalltalk.blogspot.com/


Whereof one cannot speak, thereof one must be silent.
Ludwig Wittgenstein

Hi,

In message “Re: What’s going on here? (weird Ruby 1.9 incompatibility)”
on Sun, 30 Mar 2008 22:38:37 +0900, ts [email protected]
writes:

|Tony A. wrote:
|> Is this a bug?
|
| Yes, can you submit it ?

You don’t have to. I just fixed, and am going to commit soon between
EURUKO sessions.

          matz.

Tony A. wrote:

Is this a bug?

Yes, can you submit it ?

Go to

http://rubyforge.org/tracker/?func=browse&group_id=426&atid=1698

and create a new entry with your example.

Guy Decoux

On Mon, Mar 31, 2008 at 12:28 AM, Yukihiro M.
[email protected]
wrote:

You don’t have to. I just fixed, and am going to commit soon between
EURUKO sessions.

Excellent, thank you!

Yukihiro M. wrote:

You don’t have to. I just fixed, and am going to commit soon between
EURUKO sessions.

Why not do the same with is_from_method ?

Guy Decoux