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

Reply via email to