| /** |
| * @test /nodynamiccopyright/ |
| * @bug 8214031 |
| * @summary Verify that definite assignment when true works (illegal code) |
| * @compile/fail/ref=DefiniteAssignment2.out -XDrawDiagnostics DefiniteAssignment2.java |
| */ |
| public class DefiniteAssignment2 { |
| |
| public static void meth() { |
| int a = 0; |
| boolean b = true; |
| boolean t; |
| |
| { |
| int x; |
| |
| t = (b && switch(a) { |
| case 0: yield (x = 1) == 1 || true; |
| default: yield false; |
| }) || x == 1; |
| } |
| |
| { |
| int x; |
| |
| t = (switch(a) { |
| case 0: yield (x = 1) == 1; |
| default: yield false; |
| }) || x == 1; |
| } |
| |
| { |
| int x; |
| |
| t = (switch(a) { |
| case 0: x = 1; yield true; |
| case 1: yield (x = 1) == 1; |
| default: yield false; |
| }) || x == 1; |
| } |
| |
| { |
| int x; |
| |
| t = (switch(a) { |
| case 0: yield true; |
| case 1: yield (x = 1) == 1; |
| default: yield false; |
| }) && x == 1; |
| } |
| |
| { |
| int x; |
| |
| t = (switch(a) { |
| case 0: yield false; |
| case 1: yield isTrue() || (x = 1) == 1; |
| default: yield false; |
| }) && x == 1; |
| } |
| |
| { |
| int x; |
| |
| t = (switch(a) { |
| case 0: yield false; |
| case 1: yield isTrue() ? true : (x = 1) == 1; |
| default: yield false; |
| }) && x == 1; |
| } |
| |
| { |
| final int x; |
| |
| t = (switch(a) { |
| case 0: yield false; |
| case 1: yield isTrue() ? true : (x = 1) == 1; |
| default: yield false; |
| }) && (x = 1) == 1; |
| } |
| } |
| |
| private static boolean isTrue() { |
| return true; |
| } |
| |
| } |