Hi there,
I decided to run my application against the lastest version of rhino
in source, and noticed that some of the calls to overloaded java
functions triggered a index out of bounds exception.
The following testcase works in 1.7R1
package foo;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.ContextAction;
import org.mozilla.javascript.Context;
import org.junit.Test;
public class OverloadTest {
public void method(String one, Function function) {
System.out.println("string+function");
}
public void method(String... strings) {
System.out.println("string[]");
}
@Test
public void callOverloadedFunction() {
new ContextFactory().call(new ContextAction() {
public Object run(Context cx) {
cx.evaluateString(cx.initStandardObjects(),"new
Packages.foo.OverloadTest().method('one', 'two','three')", "<test>",
1, null);
cx.evaluateString(cx.initStandardObjects(),"new
Packages.foo.OverloadTest().method('one', function() {})", "<test>",
1, null);
return null;
}
});
}
}
//outputs:
string[]
string+function
When I run it against the latest source, it results in the following
string[]
java.lang.ArrayIndexOutOfBoundsException: 1
at org.mozilla.javascript.NativeJavaMethod.preferSignature
(NativeJavaMethod.java:508)
at org.mozilla.javascript.NativeJavaMethod.findFunction
(NativeJavaMethod.java:367)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:
161)
at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:
76)
at org.mozilla.javascript.gen._test__2._c_script_0(<test>:1)
at org.mozilla.javascript.gen._test__2.call(<test>)
at org.mozilla.javascript.ContextFactory.doTopCall
(ContextFactory.java:426)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:
3060)
at org.mozilla.javascript.gen._test__2.call(<test>)
at org.mozilla.javascript.gen._test__2.exec(<test>)
at org.mozilla.javascript.Context.evaluateString(Context.java:1112)
at foo.OverloadTest$1.run(OverloadTest.java:24)
at org.mozilla.javascript.Context.call(Context.java:522)
at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:
535)
at foo.OverloadTest.callOverloadedFunction(OverloadTest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall
(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run
(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively
(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate
(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate
(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate
(RunAfters.java:31)
at org.junit.runners.BlockJUnit4ClassRunner.runChild
(BlockJUnit4ClassRunner.java:73)
at org.junit.runners.BlockJUnit4ClassRunner.runChild
(BlockJUnit4ClassRunner.java:46)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
at org.junit.internal.runners.statements.RunBefores.evaluate
(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate
(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
bug?
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino