aoqi@0: /* aoqi@0: * @test /nodynamiccopyright/ aoqi@0: * @bug 8029102 aoqi@0: * @summary Enhance compiler warnings for Lambda aoqi@0: * Checks that the warning for accessing non public members of a class is aoqi@0: * fired correctly. aoqi@0: * @compile/fail/ref=WarnSerializableLambdaTestb.out -XDrawDiagnostics -Werror -XDwarnOnAccessToSensitiveMembers WarnSerializableLambdaTestb.java aoqi@0: */ aoqi@0: aoqi@0: import java.io.Serializable; aoqi@0: aoqi@0: public class WarnSerializableLambdaTestb { aoqi@0: public void foo(Secret1 secret) { aoqi@0: Object o = (Runnable & java.io.Serializable) () -> { secret.test(); }; aoqi@0: } aoqi@0: aoqi@0: public void bar(Secret2 secret) { aoqi@0: Object o = (Runnable & java.io.Serializable) () -> { secret.test(); }; aoqi@0: } aoqi@0: aoqi@0: private class Secret1 { aoqi@0: public void test() {} aoqi@0: } aoqi@0: aoqi@0: static private class Secret2 { aoqi@0: public void test() {} aoqi@0: } aoqi@0: aoqi@0: class TestInner { aoqi@0: private int j = 0; aoqi@0: void m() { aoqi@0: Serializable s = new Serializable() { aoqi@0: int i; aoqi@0: void m() { aoqi@0: i = 0; // don't warn aoqi@0: System.out.println(j); //warn aoqi@0: } aoqi@0: }; aoqi@0: } aoqi@0: } aoqi@0: aoqi@0: class TestInner2 { aoqi@0: class W implements Serializable { aoqi@0: public int p = 0; aoqi@0: class I { aoqi@0: public int r = 0; aoqi@0: class K implements Serializable { aoqi@0: void m() { aoqi@0: p = 1; // don't warn owner is serializable aoqi@0: r = 2; // warn owner is not serializable aoqi@0: } aoqi@0: } aoqi@0: } aoqi@0: } aoqi@0: } aoqi@0: }