// P2324R2 - Labels at the end of compound statements // PR c++/103539 // { dg-do compile } // Test good cases. void p2324 () { first: int x; second: x = 1; last: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } void fn1 () { l1: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } void fn2 () { if (1) { l1: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } } void fn3 () { { { label: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } } } void fn4 () { switch (1) { lab: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } } void fn5 () { l1: l2: l3: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } void fn6 () { ; l1: l2: l3: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } #if __cplusplus >= 201103L void fn7 () { auto l = [](){ lab: }; // { dg-error "label at end of compound statement only available with" "" { target { c++20_down && c++11 } } } } #endif void fn8 () { try { lab1: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } catch (int) { lab2: } // { dg-error "label at end of compound statement only available with" "" { target c++20_down } } }