1 /* 2 * @test /nodynamiccopyright/ 3 * @bug 8029102 4 * @summary Enhance compiler warnings for Lambda 5 * Checks that the warning for accessing non public members of a class is 6 * fired correctly. 7 * @compile/fail/ref=WarnSerializableLambdaTestb.out -XDrawDiagnostics -Werror -XDwarnOnAccessToMembers WarnSerializableLambdaTestb.java 8 */ 9 10 import java.io.Serializable; 11 12 public class WarnSerializableLambdaTestb { foo(Secret1 secret)13 public void foo(Secret1 secret) { 14 Object o = (Runnable & java.io.Serializable) () -> { secret.test(); }; 15 } 16 bar(Secret2 secret)17 public void bar(Secret2 secret) { 18 Object o = (Runnable & java.io.Serializable) () -> { secret.test(); }; 19 } 20 21 private class Secret1 { test()22 public void test() {} 23 } 24 25 static private class Secret2 { test()26 public void test() {} 27 } 28 29 class TestInner { 30 private int j = 0; m()31 void m() { 32 Serializable s = new Serializable() { 33 int i; 34 void m() { 35 i = 0; // don't warn 36 System.out.println(j); //warn 37 } 38 }; 39 } 40 } 41 42 class TestInner2 { 43 class W implements Serializable { 44 public int p = 0; 45 class I { 46 public int r = 0; 47 class K implements Serializable { m()48 void m() { 49 p = 1; // don't warn owner is serializable 50 r = 2; // warn owner is not serializable 51 } 52 } 53 } 54 } 55 } 56 } 57