PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / parse / semicolon3.C
blob0d46be9ed65415588b6f17d3f2a56c5a3c2893a4
1 // PR c++/45331
2 // { dg-do compile }
3 // { dg-options -std=c++98 }
5 struct OK1
7   int a;
8 } // no complaints
9   *s5;
11 struct OK2
13   int a;
14 } // no complaints
15   &s6 = *(new OK2());
17 struct OK3
19   int a;
20 } // no complaints
21   (s7);
23 struct OK5
25   int a;
26 } ok5_var;                      // no complaints
28 struct OK6
30   int a;
31 } static ok6_var;               // no complaints
33 class OK7
35 public:
36   OK7() { };
37   int a;
38 } const ok7_var;                // no complaints
40 class OK8
42   int a;
43 } extern ok8_var;               // no complaints
45 class OK9
47   class OK9sub { int a; } mutable ok9sub; // no complaints
48   int a;
51 int
52 autotest (void)
54   struct OK10 { int a; } auto ok10 = { 0 }; // no complaints
56   return ok10.a;
59 struct OK11
61   int a;
62 } // no complaints
63   const *ok11_var;
65 struct OK12
67   int a;
68 } // no complaints
69   const &ok12_var = *(new OK12());
71 struct OK13
73   int a;
74 } // no complaints
75   static *ok13_var;
77 class OK14
79   struct OK14sub
80   {
81     int a;
82   } // no complaints
83     static &ok14_var;
86 class OK15
88   int a;
89 } typedef tOK15;
91 class OK16
93   int a;
94 } typedef *pOK16;
96 class OK17
98   int a;
99 } typedef &rOK16;
101 struct E1
103   int a;
104 } // { dg-error "after struct definition" }
106 typedef float BAR;
108 struct E2
110   int a;
111 } // { dg-error "after struct definition" }
113 const int i0 = 1;
115 struct E3
117   int a;
118 } // { dg-error "after struct definition" }
120 volatile long l0 = 1;
122 struct E4
124   int a;
125 } // { dg-error "after struct definition" }
127 extern char c0;
129 struct E5
131   int a;
132 } // { dg-error "after struct definition" }
134 static wchar_t wc0;
136 struct E6
138   int a;
139 } // { dg-error "after struct definition" }
141 bool b0;
143 class E7
145   int a;
146 } // { dg-error "after class definition" }
148 extern double d0;
150 class E8
152   int a;
153 } // { dg-error "after class definition" }
155 inline short f(void)
157   return 2;
160 class E9
162   int a;
163 } // { dg-error "after class definition" }
165 class D0
167   int a;
170 class E10
172   int a;
173 } // { dg-error "after class definition" }
175 extern class D0 &f0 (void);
177 class E11
179   int a;
180 } // { dg-error "after class definition" }
182 const struct E6 *f1 (void) { return 0; }
184 union U0 {
185   int i;
186   double d;
189 class E12
191   int a;
192 } // { dg-error "after class definition" }
194 const union U0 *f2 (void) { return 0; }
196 enum e {
197   U, V
200 class E13
202   int a;
203 } // { dg-error "after class definition" }
205 static enum e f3 (void) { return U; }
207 union E14
209   int i;
210   double d;
211 } // { dg-error "after union definition" }
213 unsigned int i1 = 2;
215 union E15
217   int i;
218   double d;
219 } // { dg-error "after union definition" }
221 signed long l1 = 3;
223 class E16
225   class sub0 { int a; }         // { dg-error "after class definition" }
226     virtual int f2 (void);
227 } // { dg-error "after class definition" }
229 class E17
231   class sub0 { int a; }         // { dg-error "after class definition" }
232     mutable int i;
233 } // { dg-error "after class definition" }
235 class E18
237   int a;
238 } // { dg-error "after class definition" }
240 typedef int E18int;
242 /* This was the original test from the PR.  */
244 class C0
246 public:
247  int a;
248 } // { dg-error "after class definition" }
250 const int foo(const C0 &x)
252  return x.a;