blob: 14657652f4a1b743ec1235158d2ac8f9eed30b8b [file] [log] [blame]
// 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 } }
}