1 /* Test C23 noreturn attribute: invalid contexts. */
2 /* { dg-do compile } */
3 /* { dg-options "-std=c23 -pedantic-errors" } */
5 [[noreturn
]]; /* { dg-error "ignored" } */
7 int [[noreturn
]] var
; /* { dg-error "ignored" } */
9 int array_with_dep_type
[2] [[noreturn
]]; /* { dg-error "ignored" } */
11 void fn_with_dep_type () [[noreturn
]]; /* { dg-error "ignored" } */
13 int z
= sizeof (int [[__noreturn__
]]); /* { dg-error "ignored" } */
15 [[noreturn
]] int x1
; /* { dg-error "can only be applied to functions" } */
16 int x2
[[__noreturn__
]]; /* { dg-error "can only be applied to functions" } */
18 [[_Noreturn
]] void (*fp
) (); /* { dg-error "can only be applied to functions" } */
24 [[_Noreturn
]]; /* { dg-error "ignored" } */
25 [[___Noreturn__
]] a
= 1; /* { dg-error "ignored" } */
29 g ([[noreturn
]] int x
, int y
) /* { dg-error "can only be applied to functions" } */
31 [[noreturn
]] typedef float F
; /* { dg-error "can only be applied to functions" } */
32 [[noreturn
]] int a
; /* { dg-error "can only be applied to functions" } */
33 int b
[[__noreturn__
]]; /* { dg-error "can only be applied to functions" } */
34 int c
[[noreturn
]]; /* { dg-error "can only be applied to functions" } */
35 [[__noreturn__
]] label1
: ; /* { dg-error "can only be applied to functions" } */
37 [[noreturn
]] label2
: ; /* { dg-error "can only be applied to functions" } */
41 struct [[_Noreturn
]] s
{ double d
; }; /* { dg-error "can only be applied to functions" } */
45 [[___Noreturn__
]] int a
; /* { dg-error "can only be applied to functions" } */
46 int b
[[noreturn
]]; /* { dg-error "can only be applied to functions" } */
49 enum e
{ E1
[[noreturn
]] }; /* { dg-error "can only be applied to functions" } */
51 union [[_Noreturn
]] u
{ int x
; }; /* { dg-error "can only be applied to functions" } */
53 enum [[noreturn
]] eu
{ E2
}; /* { dg-error "can only be applied to functions" } */
55 void fx ([[noreturn
]] int p
); /* { dg-error "can only be applied" } */
59 [[noreturn
]] int a
; /* { dg-error "can only be applied to functions" } */
60 int b
[[noreturn
]]; /* { dg-error "can only be applied to functions" } */
68 [[noreturn
]] case 1: ; /* { dg-error "can only be applied to functions" } */
69 [[__noreturn__
]] case 2: ; /* { dg-error "can only be applied to functions" } */
70 [[noreturn
]] default: ; /* { dg-error "can only be applied to functions" } */