| // PR c++/45331 |
| // { dg-do compile } |
| // { dg-options -std=c++98 } |
| |
| struct OK1 |
| { |
| int a; |
| } // no complaints |
| *s5; |
| |
| struct OK2 |
| { |
| int a; |
| } // no complaints |
| &s6 = *(new OK2()); |
| |
| struct OK3 |
| { |
| int a; |
| } // no complaints |
| (s7); |
| |
| struct OK5 |
| { |
| int a; |
| } ok5_var; // no complaints |
| |
| struct OK6 |
| { |
| int a; |
| } static ok6_var; // no complaints |
| |
| class OK7 |
| { |
| public: |
| OK7() { }; |
| int a; |
| } const ok7_var; // no complaints |
| |
| class OK8 |
| { |
| int a; |
| } extern ok8_var; // no complaints |
| |
| class OK9 |
| { |
| class OK9sub { int a; } mutable ok9sub; // no complaints |
| int a; |
| }; |
| |
| int |
| autotest (void) |
| { |
| struct OK10 { int a; } auto ok10 = { 0 }; // no complaints |
| |
| return ok10.a; |
| } |
| |
| struct OK11 |
| { |
| int a; |
| } // no complaints |
| const *ok11_var; |
| |
| struct OK12 |
| { |
| int a; |
| } // no complaints |
| const &ok12_var = *(new OK12()); |
| |
| struct OK13 |
| { |
| int a; |
| } // no complaints |
| static *ok13_var; |
| |
| class OK14 |
| { |
| struct OK14sub |
| { |
| int a; |
| } // no complaints |
| static &ok14_var; |
| }; |
| |
| class OK15 |
| { |
| int a; |
| } typedef tOK15; |
| |
| class OK16 |
| { |
| int a; |
| } typedef *pOK16; |
| |
| class OK17 |
| { |
| int a; |
| } typedef &rOK16; |
| |
| struct E1 |
| { |
| int a; |
| } // { dg-error "after struct definition" } |
| |
| typedef float BAR; |
| |
| struct E2 |
| { |
| int a; |
| } // { dg-error "after struct definition" } |
| |
| const int i0 = 1; |
| |
| struct E3 |
| { |
| int a; |
| } // { dg-error "after struct definition" } |
| |
| volatile long l0 = 1; |
| |
| struct E4 |
| { |
| int a; |
| } // { dg-error "after struct definition" } |
| |
| extern char c0; |
| |
| struct E5 |
| { |
| int a; |
| } // { dg-error "after struct definition" } |
| |
| static wchar_t wc0; |
| |
| struct E6 |
| { |
| int a; |
| } // { dg-error "after struct definition" } |
| |
| bool b0; |
| |
| class E7 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| extern double d0; |
| |
| class E8 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| inline short f(void) |
| { |
| return 2; |
| } |
| |
| class E9 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| class D0 |
| { |
| int a; |
| }; |
| |
| class E10 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| extern class D0 &f0 (void); |
| |
| class E11 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| const struct E6 *f1 (void) { return 0; } |
| |
| union U0 { |
| int i; |
| double d; |
| }; |
| |
| class E12 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| const union U0 *f2 (void) { return 0; } |
| |
| enum e { |
| U, V |
| }; |
| |
| class E13 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| static enum e f3 (void) { return U; } |
| |
| union E14 |
| { |
| int i; |
| double d; |
| } // { dg-error "after union definition" } |
| |
| unsigned int i1 = 2; |
| |
| union E15 |
| { |
| int i; |
| double d; |
| } // { dg-error "after union definition" } |
| |
| signed long l1 = 3; |
| |
| class E16 |
| { |
| class sub0 { int a; } // { dg-error "after class definition" } |
| virtual int f2 (void); |
| } // { dg-error "after class definition" } |
| |
| class E17 |
| { |
| class sub0 { int a; } // { dg-error "after class definition" } |
| mutable int i; |
| } // { dg-error "after class definition" } |
| |
| class E18 |
| { |
| int a; |
| } // { dg-error "after class definition" } |
| |
| typedef int E18int; |
| |
| /* This was the original test from the PR. */ |
| |
| class C0 |
| { |
| public: |
| int a; |
| } // { dg-error "after class definition" } |
| |
| const int foo(const C0 &x) |
| { |
| return x.a; |
| } |