| // { dg-do assemble } |
| // GROUPS passed nested-classes |
| // This is the first line of file ||t3.C||. |
| |
| // This code demonstrates a variation of the same problem with nested |
| // types. In C++, nested typedefs are not supposed to be visible |
| // outside their class scopes but they apparently are in gcc 2.4.5. |
| // This code compiles fine in AT&T cfront 3.0.1, but gcc rejects it |
| // with the messages given below. |
| |
| // If this class does not precede Expr, then the code will compile. |
| |
| class Another { |
| public: |
| typedef int Boolean; |
| enum { FALSE, TRUE }; |
| }; |
| |
| // If Expr does not define typedef int Boolean, then the code will |
| // compile. |
| |
| class Expr { |
| public: |
| typedef int Boolean; |
| enum { FALSE, TRUE }; |
| void foo(); |
| void call_something_with(Boolean); |
| }; |
| |
| // t3.C: In method `void Expr::foo ()': |
| // t3.C:36: uninitialized const `Boolean' |
| // t3.C:36: parse error before `=' |
| // t3.C:37: `argument' undeclared (first use this function) |
| // t3.C:37: (Each undeclared identifier is reported only once |
| // t3.C:37: for each function it appears in.) |
| |
| void Expr::foo() { |
| const Boolean argument = TRUE; |
| call_something_with(argument); |
| } |