diff -r da86f7904e6d -r cc85c8626435 jdk/test/java/lang/invoke/RevealDirectTest.java --- 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 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