[MacRuby] #1035: ruby subclasses of Obj-C classes have incompatible initialization semantics

MacRuby ruby-noreply at macosforge.org
Sat Dec 11 01:00:56 PST 2010


#1035: ruby subclasses of Obj-C classes have incompatible initialization semantics
-------------------------------------------------+--------------------------
 Reporter:  russm-trac-macports-org@…            |       Owner:  lsansonetti@…        
     Type:  defect                               |      Status:  new                  
 Priority:  major                                |   Milestone:                       
Component:  MacRuby                              |    Keywords:  #reduction           
-------------------------------------------------+--------------------------
 Ruby classes that inherit from Obj-C classes (including core ruby classes
 like String) have incompatible initialization semantics compared to mri.
 Since this affects some core ruby classes, it breaks compatibility between
 the mri and MacRuby environments.

 eg: in this subclass of String, S2#initialize is never called with 0
 arguments

 {{{
 ru... at alcazar:~$ macruby --version
 MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, x86_64]
 ru... at alcazar:~$ macirb
 irb(main):001:0> class S2 < String
 irb(main):002:1>   attr_accessor :foo
 irb(main):003:1>   def initialize foo = "default2"
 irb(main):004:2>     @foo = foo
 irb(main):005:2>     STDERR.puts "setting #{foo}"
 irb(main):006:2>   end
 irb(main):007:1> end
 => nil
 irb(main):008:0> s2 = S2.new
 => ""
 irb(main):009:0>
 }}}


 while under mri 1.9.2, S2#initialize is called as expected (nb. executable
 is called irb1.9.1 but is actually 1.9.2 - thanks, Debian package naming!)

 {{{
 ru... at worcestershire/~ 0 $ ruby1.9.1 --version
 ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
 ru... at worcestershire/~ 0 $ irb1.9.1
 irb(main):001:0> class S2 < String
 irb(main):002:1>   attr_accessor :foo
 irb(main):003:1>   def initialize foo = "default2"
 irb(main):004:2>     @foo = foo
 irb(main):005:2>     STDERR.puts "setting #{foo}"
 irb(main):006:2>   end
 irb(main):007:1> end
 => nil
 irb(main):008:0> s2 = S2.new
 setting default2
 => ""
 irb(main):009:0>
 }}}

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



More information about the macruby-tickets mailing list