Clean up some minor white space issues in trans-decl.c and trans-expr.c
[official-gcc.git] / gcc / testsuite / g++.dg / parse / semicolon3.C
blob8a2b1ac46301f6a0ee7f18cfff3b391f0f58db5d
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 __SIZE_TYPE__
24 test_offsetof (void)
26   // no complaints about a missing semicolon
27   return __builtin_offsetof (struct OK4 { int a; int b; }, b);
30 struct OK5
32   int a;
33 } ok5_var;                      // no complaints
35 struct OK6
37   int a;
38 } static ok6_var;               // no complaints
40 class OK7
42 public:
43   OK7() { };
44   int a;
45 } const ok7_var;                // no complaints
47 class OK8
49   int a;
50 } extern ok8_var;               // no complaints
52 class OK9
54   class OK9sub { int a; } mutable ok9sub; // no complaints
55   int a;
58 int
59 autotest (void)
61   struct OK10 { int a; } auto ok10 = { 0 }; // no complaints
63   return ok10.a;
66 struct OK11
68   int a;
69 } // no complaints
70   const *ok11_var;
72 struct OK12
74   int a;
75 } // no complaints
76   const &ok12_var = *(new OK12());
78 struct OK13
80   int a;
81 } // no complaints
82   static *ok13_var;
84 class OK14
86   struct OK14sub
87   {
88     int a;
89   } // no complaints
90     static &ok14_var;
93 class OK15
95   int a;
96 } typedef tOK15;
98 class OK16
100   int a;
101 } typedef *pOK16;
103 class OK17
105   int a;
106 } typedef &rOK16;
108 struct E1
110   int a;
111 } // { dg-error "after struct definition" }
113 typedef float BAR;
115 struct E2
117   int a;
118 } // { dg-error "after struct definition" }
120 const int i0 = 1;
122 struct E3
124   int a;
125 } // { dg-error "after struct definition" }
127 volatile long l0 = 1;
129 struct E4
131   int a;
132 } // { dg-error "after struct definition" }
134 extern char c0;
136 struct E5
138   int a;
139 } // { dg-error "after struct definition" }
141 static wchar_t wc0;
143 struct E6
145   int a;
146 } // { dg-error "after struct definition" }
148 bool b0;
150 class E7
152   int a;
153 } // { dg-error "after class definition" }
155 extern double d0;
157 class E8
159   int a;
160 } // { dg-error "after class definition" }
162 inline short f(void)
164   return 2;
167 class E9
169   int a;
170 } // { dg-error "after class definition" }
172 class D0
174   int a;
177 class E10
179   int a;
180 } // { dg-error "after class definition" }
182 extern class D0 &f0 (void);
184 class E11
186   int a;
187 } // { dg-error "after class definition" }
189 const struct E6 *f1 (void) { return 0; }
191 union U0 {
192   int i;
193   double d;
196 class E12
198   int a;
199 } // { dg-error "after class definition" }
201 const union U0 *f2 (void) { return 0; }
203 enum e {
204   U, V
207 class E13
209   int a;
210 } // { dg-error "after class definition" }
212 static enum e f3 (void) { return U; }
214 union E14
216   int i;
217   double d;
218 } // { dg-error "after union definition" }
220 unsigned int i1 = 2;
222 union E15
224   int i;
225   double d;
226 } // { dg-error "after union definition" }
228 signed long l1 = 3;
230 class E16
232   class sub0 { int a; }         // { dg-error "after class definition" }
233     virtual int f2 (void);
234 } // { dg-error "after class definition" }
236 class E17
238   class sub0 { int a; }         // { dg-error "after class definition" }
239     mutable int i;
240 } // { dg-error "after class definition" }
242 class E18
244   int a;
245 } // { dg-error "after class definition" }
247 typedef int E18int;
249 /* This was the original test from the PR.  */
251 class C0
253 public:
254  int a;
255 } // { dg-error "after class definition" }
257 const int foo(const C0 &x)
259  return x.a;