1 // { dg-do assemble } 2 // GROUPS passed nested-classes 3 // This is the first line of file ||t3.C||. 4 5 // This code demonstrates a variation of the same problem with nested 6 // types. In C++, nested typedefs are not supposed to be visible 7 // outside their class scopes but they apparently are in gcc 2.4.5. 8 // This code compiles fine in AT&T cfront 3.0.1, but gcc rejects it 9 // with the messages given below. 10 11 // If this class does not precede Expr, then the code will compile. 12 13 class Another { 14 public: 15 typedef int Boolean; 16 enum { FALSE, TRUE }; 17 }; 18 19 // If Expr does not define typedef int Boolean, then the code will 20 // compile. 21 22 class Expr { 23 public: 24 typedef int Boolean; 25 enum { FALSE, TRUE }; 26 void foo(); 27 void call_something_with(Boolean); 28 }; 29 30 // t3.C: In method `void Expr::foo ()': 31 // t3.C:36: uninitialized const `Boolean' 32 // t3.C:36: parse error before `=' 33 // t3.C:37: `argument' undeclared (first use this function) 34 // t3.C:37: (Each undeclared identifier is reported only once 35 // t3.C:37: for each function it appears in.) 36 foo()37void Expr::foo() { 38 const Boolean argument = TRUE; 39 call_something_with(argument); 40 } 41