/* * @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; } }