/* N3355 - Named loops. */ /* { dg-do compile } */ /* { dg-options "-std=c2y -pedantic-errors" } */ void foo (int x) { label1: for (int i = 0; i < 16; ++i) another_label1: for (int j = 0; j < 16; ++j) break label2; /* { dg-error "'break' statement operand 'label2' does not refer to a named loop or 'switch'; did you mean 'label1'\\\?" } */ for (int i = 0; i < 16; ++i) break label3; /* { dg-error "'break' statement operand 'label3' does not refer to a named loop or 'switch'" } */ label4: /* { dg-message "'switch' name defined here" } */ switch (x) { case 0: for (int i = 0; i < 16; ++i) continue label5; /* { dg-error "'continue' statement operand 'label5' does not refer to a named loop" } */ break label4; case 1: for (int i = 0; i < 16; ++i) continue label4; /* { dg-error "'continue' statement operand 'label4' refers to a named 'switch'" } */ } label6: for (int i = 0; i < 16; ++i) continue label7; /* { dg-error "'continue' statement operand 'label7' does not refer to a named loop; did you mean 'label6'\\\?" } */ label2: for (int i = 0; i < 16; ++i) ; label8:; for (int i = 0; i < 16; ++i) break label8; /* { dg-error "'break' statement operand 'label8' does not refer to a named loop or 'switch'" } */ label9:; for (int i = 0; i < 16; ++i) continue label9; /* { dg-error "'continue' statement operand 'label9' does not refer to a named loop" } */ label10: ; switch (x) { case 0: break label10; /* { dg-error "'break' statement operand 'label10' does not refer to a named loop or 'switch'" } */ } }