111
|
1 /* Test for uses of incomplete enum variables: should be allowed just
|
|
2 when incomplete structs are allowed. PR 32295. */
|
|
3 /* Origin: Joseph Myers <joseph@codesourcery.com> */
|
|
4 /* { dg-do compile } */
|
|
5 /* { dg-options "" } */
|
|
6
|
|
7 extern enum e ve;
|
|
8 extern struct s vs;
|
|
9 void *p;
|
|
10
|
|
11 int
|
|
12 f0 (int i)
|
|
13 {
|
|
14 ve; /* { dg-error "incomplete" } */
|
|
15 vs; /* { dg-error "incomplete" } */
|
145
|
16 (void) ve; /* { dg-error "incomplete" } */
|
|
17 (void) vs; /* { dg-error "incomplete" } */
|
111
|
18 (void) (i ? ve : ve); /* { dg-error "incomplete" } */
|
|
19 (void) (i ? vs : vs); /* { dg-error "incomplete" } */
|
|
20 (void) (ve = ve); /* { dg-error "incomplete" } */
|
|
21 (void) (vs = vs); /* { dg-error "incomplete" } */
|
145
|
22 (void) ve, /* { dg-error "incomplete" } */
|
|
23 (void) ve; /* { dg-error "incomplete" } */
|
|
24 (void) vs, /* { dg-error "incomplete" } */
|
|
25 (void) vs; /* { dg-error "incomplete" } */
|
111
|
26 p = &ve;
|
|
27 p = &vs;
|
|
28 (void) sizeof (ve); /* { dg-error "incomplete" } */
|
|
29 (void) sizeof (vs); /* { dg-error "incomplete" } */
|
|
30 typeof (ve) *pe;
|
|
31 typeof (vs) *ps;
|
|
32 /* ??? alignof should probably not be accepted here. */
|
|
33 (void) __alignof (ve);
|
|
34 (void) __alignof (vs);
|
|
35 (void) (ve + i); /* { dg-error "incomplete" } */
|
|
36 (void) (i * ve); /* { dg-error "incomplete" } */
|
|
37 (void) (i / ve); /* { dg-error "incomplete" } */
|
|
38 (void) (ve - i); /* { dg-error "incomplete" } */
|
|
39 (void) (ve << i); /* { dg-error "incomplete" } */
|
|
40 (void) (i >> ve); /* { dg-error "incomplete" } */
|
|
41 (void) (ve < i); /* { dg-error "incomplete" } */
|
|
42 (void) (ve <= i); /* { dg-error "incomplete" } */
|
|
43 (void) (i > ve); /* { dg-error "incomplete" } */
|
|
44 (void) (i >= ve); /* { dg-error "incomplete" } */
|
|
45 (void) (ve == i); /* { dg-error "incomplete" } */
|
|
46 (void) (i != ve); /* { dg-error "incomplete" } */
|
|
47 (void) (ve & i); /* { dg-error "incomplete" } */
|
|
48 (void) (ve ^ i); /* { dg-error "incomplete" } */
|
|
49 (void) (i | ve); /* { dg-error "incomplete" } */
|
|
50 (void) (i && ve); /* { dg-error "incomplete" } */
|
|
51 (void) (ve || i); /* { dg-error "incomplete" } */
|
|
52 (void) -ve; /* { dg-error "incomplete" } */
|
|
53 (void) +ve; /* { dg-error "incomplete" } */
|
|
54 (void) ~ve; /* { dg-error "incomplete" } */
|
|
55 (void) !ve; /* { dg-error "incomplete" } */
|
|
56 (void) --ve; /* { dg-error "incomplete" } */
|
|
57 (void) ++ve; /* { dg-error "incomplete" } */
|
|
58 (void) ve--; /* { dg-error "incomplete" } */
|
|
59 (void) ve++; /* { dg-error "incomplete" } */
|
|
60 i = ve; /* { dg-error "incomplete" } */
|
|
61 i *= ve; /* { dg-error "incomplete" } */
|
|
62 i /= ve; /* { dg-error "incomplete" } */
|
|
63 i %= ve; /* { dg-error "incomplete" } */
|
|
64 i += ve; /* { dg-error "incomplete" } */
|
|
65 i -= ve; /* { dg-error "incomplete" } */
|
|
66 i <<= ve; /* { dg-error "incomplete" } */
|
|
67 i >>= ve; /* { dg-error "incomplete" } */
|
|
68 i &= ve; /* { dg-error "incomplete" } */
|
|
69 i ^= ve; /* { dg-error "incomplete" } */
|
|
70 i |= ve; /* { dg-error "incomplete" } */
|
|
71 (void) (ve ? 1 : 1); /* { dg-error "incomplete" } */
|
|
72 (void) (int) ve; /* { dg-error "incomplete" } */
|
|
73 f0 (ve); /* { dg-error "incomplete" } */
|
|
74 if (ve) /* { dg-error "incomplete" } */
|
|
75 ;
|
|
76 do
|
|
77 ;
|
|
78 while (ve); /* { dg-error "incomplete" } */
|
|
79 while (ve) /* { dg-error "incomplete" } */
|
|
80 ;
|
|
81 _Bool b = ve; /* { dg-error "incomplete" } */
|
|
82 float f = ve; /* { dg-error "incomplete" } */
|
|
83 switch (ve) /* { dg-error "incomplete" } */
|
|
84 ;
|
|
85 for (; ve;) /* { dg-error "incomplete" } */
|
|
86 ;
|
|
87 return ve; /* { dg-error "incomplete" } */
|
|
88 }
|