29852ecd80
Reviewed-by: alanb, mcimadamore, kvn
55 lines
1.9 KiB
Java
55 lines
1.9 KiB
Java
/*
|
|
* @test /nodynamiccopyright/
|
|
* @bug 8206986
|
|
* @summary Check behavior for invalid breaks.
|
|
* @compile/fail/ref=ExpressionSwitchBreaks2.out -XDrawDiagnostics ExpressionSwitchBreaks2.java
|
|
*/
|
|
|
|
public class ExpressionSwitchBreaks2 {
|
|
private String print(int i, int j) {
|
|
LOOP: while (true) {
|
|
OUTER: switch (i) {
|
|
case 0:
|
|
return switch (j) {
|
|
case 0:
|
|
yield "0-0";
|
|
case 1:
|
|
break ; //error: missing value
|
|
case 2:
|
|
break OUTER; //error: jumping outside of the switch expression
|
|
case 3: {
|
|
int x = -1;
|
|
x: switch (i + j) {
|
|
case 0: break x;
|
|
}
|
|
yield "X";
|
|
}
|
|
case 4: return "X"; //error: no returns from inside of the switch expression
|
|
case 5: continue; //error: no continue out of the switch expression
|
|
case 6: continue LOOP; //error: dtto, but with a label
|
|
case 7: continue UNKNOWN; //error: unknown label
|
|
default: {
|
|
String x = "X";
|
|
x: switch (i + j) {
|
|
case 0: yield ""; //error: cannot yield from switch expression that is not immediatelly enclosing
|
|
}
|
|
yield "X";
|
|
}
|
|
};
|
|
case 1:
|
|
yield "1" + undef; //error: complex value and no switch expression
|
|
}
|
|
}
|
|
j: print(switch (i) {
|
|
case 0: yield 0;
|
|
default: break j;
|
|
}, 0);
|
|
j2: print(switch (i) {
|
|
case 0: yield 0;
|
|
default: break j2;
|
|
}, 0);
|
|
return null;
|
|
}
|
|
|
|
}
|