test/java/lang/invoke/MethodHandles/TestCatchException.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
jdk Cdiff test/java/lang/invoke/MethodHandles/TestCatchException.java
test/java/lang/invoke/MethodHandles/TestCatchException.java
Print this page
rev 9089 : [mq]: 8027827.catchException.custom.webrev01
rev 9092 : [mq]: 8027827.remove_caching
*** 23,33 ****
* questions.
*/
/**
* @test
! * @bug 8027823
* @run junit test.java.lang.invoke.TestCatchException
*/
package test.java.lang.invoke;
import java.lang.invoke.*;
--- 23,33 ----
* questions.
*/
/**
* @test
! * @bug 8027823 8034120
* @run junit test.java.lang.invoke.TestCatchException
*/
package test.java.lang.invoke;
import java.lang.invoke.*;
*** 70,81 ****
--- 70,116 ----
int x = (int)h.invokeExact(new Object(), new Object(), 1, 2, 3, 4, 5, 6, 7);
assertEquals(x, 17);
}
+
+ public static Object m1(Object o1, Object o2, Object o3, Object o4, Object o5,
+ Object o6, Object o7, Object o8, Object... tail) {
+ return tail;
+ }
+
+ public static Object m2(Exception e, Object o1, Object o2, Object o3, Object o4,
+ Object o5, Object o6, Object o7, Object o8, Object... tail) {
+ return tail;
+ }
+
+ @Test
+ public void testVarargsCollector() throws Throwable {
+ MethodType t1 = MethodType.methodType(Object.class, Object.class, Object.class, Object.class, Object.class,
+ Object.class, Object.class, Object.class, Object.class, Object[].class);
+
+ MethodType t2 = t1.insertParameterTypes(0, Exception.class);
+
+ MethodHandle target = LOOKUP.findStatic(TestCatchException.class, "m1", t1)
+ .asVarargsCollector(Object[].class);
+
+ MethodHandle catcher = LOOKUP.findStatic(TestCatchException.class, "m2", t2);
+
+ MethodHandle gwc = MethodHandles.catchException(target, Exception.class, catcher);
+
+ Object o = new Object();
+ Object[] obj1 = new Object[] { "str" };
+
+ Object r1 = target.invokeExact(o, o, o, o, o, o, o, o, obj1);
+ Object r2 = gwc.invokeExact(o, o, o, o, o, o, o, o, obj1);
+ assertTrue(r1 != null);
+ assertTrue(r1.equals(r2));
+ }
+
public static void main(String[] args) throws Throwable {
TestCatchException test = new TestCatchException();
test.testNoThrowPath();
test.testThrowPath();
+ test.testVarargsCollector();
System.out.println("TEST PASSED");
}
}
test/java/lang/invoke/MethodHandles/TestCatchException.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File