That looks like it's coming from a Java 5/Java 6 compatibility issue.
See https://bugzilla.mozilla.org/show_bug.cgi?id=467396

Are you running Java 5? If so switching to Java 6 should fix it.

On May 28, 4:17 am, Charles Lowell <[email protected]> wrote:
> 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