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