C# Overloads and IronRuby Classes

Hi there,

The next scenario worked for me on older versions but now the behavior
changed and I’d like to know if the change is a bug or by design.

This is my C# code:
public class MyClass {
public void A() { A(1); }
public void A(int val) { A(val, “foo”); }
public void A(int val, string str) { Console.WriteLine(“{0} - {1}”,
val, str); }
}

And now in IR:
class IronRubyRulez < MyClass; end
test = IronRubyRulez.new
test.a # Prints “1 - foo”
test.a(5) # Prints “5 - foo”
test.a(7, “boom”) # Prints “7 - boom”

So far so good… but now I’d like to override the method “a”:
class IronRubyRulez < MyClass
def a
super(12)
end
end
test = IronRubyRulez.new
test.a # Error! wrong number of arguments (2 for 0)

This worked on older versions and resulted with “12 - foo”.
Bug or by design?

Thanks!
Shay.

Shay F.
http://www.ironshay.com
Follow me: http://twitter.com/ironshay

Shay F. wrote:

Hi there,
…code snipped…
This worked on older versions and resulted with “12 - foo”.
Bug or by design?

Besides compiling the C# file, and requiring the resulting library, I
was able to run your code without modification.

Are you passing any special arguments to ir.exe when running the
program?
I am using the latest pre-compiled 0.6v from the codeplex site:
http://ironruby.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29640

Out of curiosity, you could try with a different method name, in case
there is possibly a conflict somewhere with another “A”

If the forum allows me, I’ll be attaching the exact files I used from
your example. Otherwise, I’ll email them to you.

Well, I tried again and it now works… can’t tell what was wrong the
other day…

Thanks for the help!
Shay.