test/tools/javac/T8029102/WarnSerializableLambdaTestb.java

Wed, 13 Aug 2014 14:50:00 -0700

author
katleman
date
Wed, 13 Aug 2014 14:50:00 -0700
changeset 2549
0b6cc4ea670f
parent 0
959103a6100f
permissions
-rw-r--r--

Added tag jdk8u40-b01 for changeset bf89a471779d

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

mercurial