test/tools/javac/lambda/EffectivelyFinalTest.java

Sat, 07 Nov 2020 10:30:02 +0800

author
aoqi
date
Sat, 07 Nov 2020 10:30:02 +0800
changeset 3938
93012e2a5d1d
parent 2525
2eb010b6cb22
permissions
-rw-r--r--

Added tag mips-jdk8u275-b01 for changeset eb6ee6a5f2fe

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 }

mercurial