[MacRuby-devel] [MacRuby] #513: MacRuby gets confused about inheritance under certain conditions

MacRuby ruby-noreply at macosforge.org
Thu Dec 17 21:02:54 PST 2009


#513: MacRuby gets confused about inheritance under certain conditions
-----------------------------------+----------------------------------------
 Reporter:  matthew@…              |       Owner:  lsansonetti@…        
     Type:  defect                 |      Status:  new                  
 Priority:  blocker                |   Milestone:                       
Component:  MacRuby                |    Keywords:                       
-----------------------------------+----------------------------------------
 Given the following code,

 {{{
 module Foo
   module Baz
     def initialize(a, b)
     end
   end
 end

 module Foo
   module Bar
     module Baz
       include Foo::Baz

       def initialize(a, b, c, d)
         super(a, b)
       end
     end
   end
 end

 module Foo
   module Bar
     module Quux
       include Baz
     end
   end
 end

 module Foo
   module Bar
     module Baz
       class Bat
         include Foo::Bar::Baz
         include Foo::Bar::Quux
       end
     end
   end
 end
 }}}

 There are two related errors associated with this piece of code.

 1.

 {{{Foo::Bar::Baz::Bat.new}}}

 '''Expected result (Ruby 1.9.1)'''

 ArgumentError: wrong number of arguments (0 for 4)

 '''Actual result (MacRuby 0.5b2)'''

 => #<Foo::Bar::Baz::Bat:0x200252380>

 Note the difference in response from #512!

 2.

 {{{Foo::Bar::Baz::Bat.new(nil, nil, nil, nil)}}}

 '''Expected result (Ruby 1.9.1)'''

 => #<Foo::Bar::Baz::Bat:0x913598>

 '''Actual result (MacRuby 0.5b2)'''

 ArgumentError: wrong number of arguments (4 for 2)

 It seems that MacRuby is becoming confused.  Here are a few ways to make
 it understand that Foo::Bar::Baz::Bat#initialize should accept 4
 arguments.

 - Comment out Foo::Bar::Baz::Bat's second include statement (line
 33)[[BR]]
 - Comment out Foo::Bar::Quux's include statement (line 23)[[BR]]
 - Comment out Foo::Bar::Baz's include statement (line 11) and
 Foo::Bar::Baz#initialize's super call (line 14)

 Of course, for my application I need the original functionality, so none
 of those will work for me.  :-)  If you find a workaround while
 investigating, please let me know.

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/513>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list