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

     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 -XDwarnOnAccessToSensitiveMembers WarnSerializableLambdaTestb.java
     8  */
    10 import java.io.Serializable;
    12 public class WarnSerializableLambdaTestb {
    13      public void foo(Secret1 secret) {
    14          Object o = (Runnable & java.io.Serializable) () -> { secret.test(); };
    15      }
    17      public void bar(Secret2 secret) {
    18          Object o = (Runnable & java.io.Serializable) () -> { secret.test(); };
    19      }
    21      private class Secret1 {
    22          public void test() {}
    23      }
    25      static private class Secret2 {
    26          public void test() {}
    27      }
    29      class TestInner {
    30         private int j = 0;
    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     }
    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 {
    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 }

mercurial