Charles Strahan
2010-Jul-29 06:03 UTC
[Ironruby-core] super(foo) doesn''t work correctly when subclassing Ruby classes implemented in C#
I''ve found an odd bug. I think this is Tomas'' territory, but I could be wrong. I''ve already opened an issue on codeplex ( http://ironruby.codeplex.com/workitem/4957), but I figured I''d mention it here to generate some discussion. First, here''s a quick repro of the bug: class File2 < File def initialize super("foobar.txt") end end File2.new # TypeError: can''t convert String into Fixnum What''s going on here? Well, it looks like IronRuby has arbitrarily picked a constructor overload to use when it finds a call to super. If I instead put "super(1)", it would work just fine. This same problem seems to plague any RubyClass that was implemented in C# using the IronRuby library APIs. Could someone give me a sanity check, please? You''ll notice that the code snippet above works just fine on MRI, so I don''t think I''ve lost my marbles just yet :). -Charles -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20100729/d0a5b2f8/attachment.html>
Charles Strahan
2010-Jul-30 14:23 UTC
[Ironruby-core] super(foo) doesn''t work correctly when subclassing Ruby classes implemented in C#
Tomas, have you had a chance to look at this? It looks like we can''t safely subclass anything in the standard library (or yaml) in IronRuby. Just wanted to see if you could confirm. If so, I''d bump up the priority of the CodePlex ticket - this is a pretty big incompatibility with MRI. Cheers, -Charles On Thu, Jul 29, 2010 at 1:03 AM, Charles Strahan < charles.c.strahan at gmail.com> wrote:> I''ve found an odd bug. I think this is Tomas'' territory, but I could be > wrong. I''ve already opened an issue on codeplex ( > http://ironruby.codeplex.com/workitem/4957), but I figured I''d mention it > here to generate some discussion. > > First, here''s a quick repro of the bug: > > class File2 < File > def initialize > super("foobar.txt") > end > end > > File2.new > # TypeError: can''t convert String into Fixnum > > > What''s going on here? Well, it looks like IronRuby has arbitrarily picked > a constructor overload to use when it finds a call to super. If I instead > put "super(1)", it would work just fine. This same problem seems to plague > any RubyClass that was implemented in C# using the IronRuby library APIs. > > Could someone give me a sanity check, please? You''ll notice that the code > snippet above works just fine on MRI, so I don''t think I''ve lost my marbles > just yet :). > > -Charles >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20100730/7c7acdda/attachment.html>