Wed, 27 Apr 2016 01:34:52 +0800
Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/langtools/
changeset: 2573:53ca196be1ae
tag: jdk8u25-b17
aoqi@0 | 1 | /* |
aoqi@0 | 2 | * @test /nodynamiccopyright/ |
aoqi@0 | 3 | * @bug 7175538 8003280 |
aoqi@0 | 4 | * @summary Add lambda tests |
aoqi@0 | 5 | * Integrate effectively final check with DA/DU analysis |
aoqi@0 | 6 | * @compile/fail/ref=EffectivelyFinalTest01.out -XDrawDiagnostics EffectivelyFinalTest.java |
aoqi@0 | 7 | * @compile/fail/ref=EffectivelyFinalTest02.out -source 7 -Xlint:-options -XDrawDiagnostics EffectivelyFinalTest.java |
aoqi@0 | 8 | */ |
aoqi@0 | 9 | class EffectivelyFinalTest { |
aoqi@0 | 10 | |
aoqi@0 | 11 | void m1(int x) { |
aoqi@0 | 12 | int y = 1; |
aoqi@0 | 13 | new Object() { { System.out.println(x+y); } }; //ok - both x and y are EF |
aoqi@0 | 14 | } |
aoqi@0 | 15 | |
aoqi@0 | 16 | void m2(int x) { |
aoqi@0 | 17 | int y; |
aoqi@0 | 18 | y = 1; |
aoqi@0 | 19 | new Object() { { System.out.println(x+y); } }; //ok - both x and y are EF |
aoqi@0 | 20 | } |
aoqi@0 | 21 | |
aoqi@0 | 22 | void m3(int x, boolean cond) { |
aoqi@0 | 23 | int y; |
aoqi@0 | 24 | if (cond) y = 1; |
aoqi@0 | 25 | new Object() { { System.out.println(x+y); } }; //error - y not DA |
aoqi@0 | 26 | } |
aoqi@0 | 27 | |
aoqi@0 | 28 | void m4(int x, boolean cond) { |
aoqi@0 | 29 | int y; |
aoqi@0 | 30 | if (cond) y = 1; |
aoqi@0 | 31 | else y = 2; |
aoqi@0 | 32 | new Object() { { System.out.println(x+y); } }; //ok - both x and y are EF |
aoqi@0 | 33 | } |
aoqi@0 | 34 | |
aoqi@0 | 35 | void m5(int x, boolean cond) { |
aoqi@0 | 36 | int y; |
aoqi@0 | 37 | if (cond) y = 1; |
aoqi@0 | 38 | y = 2; |
aoqi@0 | 39 | new Object() { { System.out.println(x+y); } }; //error - y not EF |
aoqi@0 | 40 | } |
aoqi@0 | 41 | |
aoqi@0 | 42 | void m6(int x) { |
aoqi@0 | 43 | new Object() { { System.out.println(x+1); } }; //error - x not EF |
aoqi@0 | 44 | x++; // Illegal: x is not effectively final. |
aoqi@0 | 45 | } |
aoqi@0 | 46 | |
aoqi@0 | 47 | void m7(int x) { |
aoqi@0 | 48 | new Object() { { System.out.println(x=1); } }; //error - x not EF |
aoqi@0 | 49 | } |
aoqi@0 | 50 | |
aoqi@0 | 51 | void m8() { |
aoqi@0 | 52 | int y; |
aoqi@0 | 53 | new Object() { { System.out.println(y=1); } }; //error - y not EF |
aoqi@0 | 54 | } |
aoqi@0 | 55 | } |