[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