Adds tests for Js varargs in Java 8 lambdas. Change-Id: I95d4a6cc736e3afd2e01ba10ef80afbbb1a4ebfe
diff --git a/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java b/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java index 91a66f0..20008d4 100644 --- a/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java +++ b/user/test-super/com/google/gwt/dev/jjs/super/com/google/gwt/dev/jjs/test/Java8Test.java
@@ -24,6 +24,7 @@ import java.util.Arrays; import java.util.List; +import jsinterop.annotations.JsFunction; import jsinterop.annotations.JsOverlay; import jsinterop.annotations.JsProperty; import jsinterop.annotations.JsType; @@ -1346,7 +1347,7 @@ } } - public void testNativeJsTypeWithStaticIntializer() { + public void testNativeJsTypeWithStaticInitializer() { assertEquals(3, NativeJsTypeInterfaceWithStaticInitializationAndFieldAccess.object); assertEquals( 4, NativeJsTypeInterfaceWithStaticInitializationAndStaticOverlayMethod.getObject()); @@ -1356,4 +1357,21 @@ assertEquals(7, NativeJsTypeInterfaceWithComplexStaticInitialization.object); assertEquals(9, new JavaTypeImplementingNativeJsTypeInterceWithDefaultMethod().getObject()); } + + @JsFunction + interface VarargsFunction { + String f(int i, String... args); + } + + private static native String callFromJSNI(VarargsFunction f) /*-{ + return f(2, "a", "b", "c"); + }-*/; + + public void testJsVarargsLambda() { + VarargsFunction function = (i, args) -> args[i]; + assertSame("b", function.f(1, "a", "b", "c")); + assertSame("c", callFromJSNI(function)); + String[] pars = new String[] {"a", "b", "c"}; + assertSame("a", function.f(0, pars)); + } }
diff --git a/user/test/com/google/gwt/dev/jjs/test/Java8Test.java b/user/test/com/google/gwt/dev/jjs/test/Java8Test.java index d1ff194..a521bf2 100644 --- a/user/test/com/google/gwt/dev/jjs/test/Java8Test.java +++ b/user/test/com/google/gwt/dev/jjs/test/Java8Test.java
@@ -260,7 +260,11 @@ assertFalse(isGwtSourceLevel8()); } - public void testNativeJsTypeWithStaticIntializer() { + public void testNativeJsTypeWithStaticInitializer() { + assertFalse(isGwtSourceLevel8()); + } + + public void testJsVarargsLambda() { assertFalse(isGwtSourceLevel8()); }