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());
}