[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

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

Tony Arcieri

3/29/2008 6:08:00 PM

[Note: parts of this message were removed to make it a legal post.]

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 `<main>': wrong number of arguments (1 for 0) (ArgumentError)

--
Tony Arcieri
medioh.com

3 Answers

Tony Arcieri

3/29/2008 7:49:00 PM

0

[Note: parts of this message were removed to make it a legal post.]

On Sat, Mar 29, 2008 at 12:08 PM, Tony Arcieri <tony@medioh.com> wrote:

> Ruby 1.8 prints:
> "yay"
>
> Ruby 1.9 complains (on the p b.b line):
> 14:in `<main>': 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?

--
Tony Arcieri
medioh.com

Robert Dober

3/29/2008 8:09:00 PM

0

On Sat, Mar 29, 2008 at 7:08 PM, Tony Arcieri <tony@medioh.com> wrote:
> 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 `<main>': wrong number of arguments (1 for 0) (ArgumentError)
>
> --
> Tony Arcieri
> 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?

<code>
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
</code>

Cheers
Robert
--
http://ruby-smalltalk.blo...

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

ts

3/30/2008 1:39:00 PM

0

Tony Arcieri wrote:
> Is this a bug?

Yes, can you submit it ?

Go to

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

and create a new entry with your example.


Guy Decoux