1 /* Test #elifdef and #elifndef in GNU11: erroneous usages.  */
2 /* { dg-do preprocess } */
3 /* { dg-options "-std=gnu11" } */
4 
5 #define A
6 #undef B
7 
8 #elifdef A /* { dg-error "#elifdef without #if" } */
9 #elifdef B /* { dg-error "#elifdef without #if" } */
10 #elifndef A /* { dg-error "#elifndef without #if" } */
11 #elifndef B /* { dg-error "#elifndef without #if" } */
12 
13 #if 1 /* { dg-error "-:began here" } */
14 #else
15 #elifdef A /* { dg-error "#elifdef after #else" } */
16 #endif
17 
18 #if 1 /* { dg-error "-:began here" } */
19 #else
20 #elifdef B /* { dg-error "#elifdef after #else" } */
21 #endif
22 
23 #if 1 /* { dg-error "-:began here" } */
24 #else
25 #elifndef A /* { dg-error "#elifndef after #else" } */
26 #endif
27 
28 #if 1 /* { dg-error "-:began here" } */
29 #else
30 #elifndef B /* { dg-error "#elifndef after #else" } */
31 #endif
32 
33 #if 0
34 #elifdef A = /* { dg-warning "extra tokens at end of #elifdef directive" } */
35 #endif
36 
37 #if 0
38 #elifdef B = /* { dg-warning "extra tokens at end of #elifdef directive" } */
39 #endif
40 
41 #if 0
42 #elifndef A = /* { dg-warning "extra tokens at end of #elifndef directive" } */
43 #endif
44 
45 #if 0
46 #elifndef B = /* { dg-warning "extra tokens at end of #elifndef directive" } */
47 #endif
48 
49 #if 0
50 #elifdef /* { dg-error "no macro name given in #elifdef directive" } */
51 #endif
52 
53 #if 0
54 #elifndef /* { dg-error "no macro name given in #elifndef directive" } */
55 #endif
56 
57 #if 0
58 #elifdef , /* { dg-error "macro names must be identifiers" } */
59 #endif
60 
61 #if 0
62 #elifndef , /* { dg-error "macro names must be identifiers" } */
63 #endif
64