Skip to content

Commit

Permalink
Fixes #2816. UnboundMethod#parameters for an assignment method wrongl…
Browse files Browse the repository at this point in the history
…y returns blank array
  • Loading branch information
enebo committed Apr 9, 2015
1 parent 206d9d6 commit 7861be0
Showing 1 changed file with 11 additions and 0 deletions.
Expand Up @@ -46,6 +46,10 @@ public abstract class JavaMethod extends DynamicMethod implements Cloneable, Met
private String parameterDesc;
private String[] parameterList;

private static String[] ONE_REQ = new String[] { "q" };
private static String[] TWO_REQ = new String[] { "q", "q" };
private static String[] THREE_REQ = new String[] { "q", "q", "q" };

public static final Class[][] METHODS = {
{JavaMethodZero.class, JavaMethodZeroOrOne.class, JavaMethodZeroOrOneOrTwo.class, JavaMethodZeroOrOneOrTwoOrThree.class},
{null, JavaMethodOne.class, JavaMethodOneOrTwo.class, JavaMethodOneOrTwoOrThree.class},
Expand Down Expand Up @@ -958,12 +962,15 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public static abstract class JavaMethodOne extends JavaMethodOneOrN {
public JavaMethodOne(RubyModule implementationClass, Visibility visibility) {
super(implementationClass, visibility);
setParameterList(ONE_REQ);
}
public JavaMethodOne(RubyModule implementationClass, Visibility visibility, CallConfiguration callConfig) {
super(implementationClass, visibility, callConfig);
setParameterList(ONE_REQ);
}
public JavaMethodOne(RubyModule implementationClass, Visibility visibility, CallConfiguration callConfig, String name) {
super(implementationClass, visibility, callConfig, name);
setParameterList(ONE_REQ);
}

public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
Expand Down Expand Up @@ -1024,9 +1031,11 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public static abstract class JavaMethodTwo extends JavaMethodTwoOrN {
public JavaMethodTwo(RubyModule implementationClass, Visibility visibility) {
super(implementationClass, visibility);
setParameterList(TWO_REQ);
}
public JavaMethodTwo(RubyModule implementationClass, Visibility visibility, CallConfiguration callConfig) {
super(implementationClass, visibility, callConfig);
setParameterList(TWO_REQ);
}

public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
Expand Down Expand Up @@ -1065,9 +1074,11 @@ public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule claz
public static abstract class JavaMethodThree extends JavaMethodThreeOrN {
public JavaMethodThree(RubyModule implementationClass, Visibility visibility) {
super(implementationClass, visibility);
setParameterList(THREE_REQ);
}
public JavaMethodThree(RubyModule implementationClass, Visibility visibility, CallConfiguration callConfig) {
super(implementationClass, visibility, callConfig);
setParameterList(THREE_REQ);
}

public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) {
Expand Down

0 comments on commit 7861be0

Please sign in to comment.