--- a/jdk/test/java/lang/invoke/RevealDirectTest.java Sat Oct 05 05:30:39 2013 -0700
+++ b/jdk/test/java/lang/invoke/RevealDirectTest.java Sat Oct 05 05:30:40 2013 -0700
@@ -104,6 +104,9 @@
private static Lookup localLookup() { return lookup(); }
private static List<Member> members() { return getMembers(lookup().lookupClass()); };
}
+ static class Nestmate {
+ private static Lookup localLookup() { return lookup(); }
+ }
static boolean VERBOSE = false;
@@ -152,7 +155,10 @@
getMembers(Method.class, "invoke"));
mems = callerSensitive(true, publicOnly(mems));
// CS methods cannot be looked up with publicLookup
- testOnMembersNoLookup("testCallerSensitiveNegative", mems, publicLookup());
+ testOnMembersNoLookup("testCallerSensitiveNegative/1", mems, publicLookup());
+ // CS methods have to be revealed with a matching lookupClass
+ testOnMembersNoReveal("testCallerSensitiveNegative/2", mems, Simple.localLookup(), publicLookup());
+ testOnMembersNoReveal("testCallerSensitiveNegative/3", mems, Simple.localLookup(), Nestmate.localLookup());
}
@Test public void testMethodHandleNatives() throws Throwable {
if (VERBOSE) System.out.println("@Test testMethodHandleNatives");
@@ -703,7 +709,7 @@
try {
info = revLookup.revealDirect(mh);
if (expectEx2) throw new AssertionError("unexpected revelation for negative test");
- } catch (Throwable ex2) {
+ } catch (IllegalArgumentException|SecurityException ex2) {
if (VERBOSE) System.out.println(" "+variation+": "+res+" => "+mh.getClass().getName()+" => (EX2)"+ex2);
if (expectEx2)
continue; // this is OK; we expected the reflect to fail