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

Posted by Charles Strahan (charles-strahan)
on 2010-08-01 00:45
(Received via mailing list)
I could use some help with Issue #4957
(http://ironruby.codeplex.com/workitem/4957).

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

-Charles
Posted by Tomas Matousek (Guest)
on 2010-08-01 07:28
(Received via mailing list)
Place breakpoint in file SuperCallAction.cs after the call to

method = targetClass.ResolveSuperMethodNoLock(currentMethodName, 
currentDeclaringModule).InvalidateSitesOnOverride().Info;

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.MutableString)}
{IronRuby.Builtins.RubyIO Reinitialize(IronRuby.Builtins.RubyIO, Int32, 
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:

>>> File.private_instance_methods(false).sort
=> ["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.

Tomas
Posted by Charles Strahan (charles-strahan)
on 2010-08-01 19:49
(Received via mailing list)
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 :) (12:10 AM,
CDT).

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:      ironruby-core@rubyforge.org
>>>> 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):



-Charles

On Sun, Aug 1, 2010 at 12:10 AM, Tomas Matousek
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.