Can't subclass IronRuby libraries ("super" doesn't resolve correctly)

I could use some help with Issue #4957

Does anyone know where super class ctors are resolved? I haven’t been
able to spot where they are resolved in the code.


Place breakpoint in file SuperCallAction.cs after the call to

method = targetClass.ResolveSuperMethodNoLock(currentMethodName,

this finds the method. You can see that it is a RubyLibraryMethodInfo
(i.e. a Ruby method defined in C# library) and has two overloads
(MethodBases property)
{IronRuby.Builtins.RubyIO Reinitialize(IronRuby.Builtins.RubyIO, Int32,
{IronRuby.Builtins.RubyIO Reinitialize(IronRuby.Builtins.RubyIO, Int32,

This method is defined in IOOps and expects the first argument to be a
file descriptor.
If we look at File’s private instance methods in MRI we see:

irb(main):004:0> File.private_instance_methods(false).sort
=> [“initialize”]

While in IronRuby we get a different result:

=> [“blockdev?”, “chardev?”, “directory?”, “executable?”,
“executable_real?”, “exist?”, “exists?”, “file?”, “grpowned?”,
“identical?”, “owned?”, “pipe?”, “readable?”, “readable_real?”,
“setgid?”, “setuid?”, “size”, “size?”, “socket?”, “stic
ky?”, “symlink?”, “writable?”, “writable_real?”, “zero?”]

This means there are two bugs:

  1. initialize is missing from File
  2. bunch of private methods shouldn’t be there

Have a fix almost ready.


Awesome - I just saw that this was marked as fixed on codeplex.

Thanks for taking the time to walk me through debugging this - I’m
going to try it out a little later today. I would have tried it out
yesterday, but it was bed time on my side of the planet :slight_smile: (12:10 AM,

Btw, sorry for spamming the mailing list - I kept getting bounce back
notifications, despite the fact that each email I sent to the ML shows
up on rubyforge (perhaps because of html formatting?), and I presume
everyone received an email too. Arg…

Your message

To: [email protected]
Subject: [Ironruby-core] Can’t subclass IronRuby libraries (“super”
doesn’tresolve correctly)
Sent: Sat, 31 Jul 2010 15:34:00 -0700

did not reach the following recipient(s):


On Sun, Aug 1, 2010 at 12:10 AM, Tomas M.