900107_01.C   [plain text]


// g++ 1.36.1 bug 900107_01

// Unlike GCC and Cfront 2.0, the g++ 1.36.1 compiler gives struct, union,
// and class declarations which are nested within blocks file scope.

// Cfront 2.0 passes this test.

// keywords: block scope, file scope, nested types, tagged types

class c1 { int c1_member1; };
struct s1 { int s1_member1; };
union u1 { int u1_member1; };
enum e1 { e1_val1 };
typedef int t1;

void foo ()
{
  class c1 {			// gets bogus error
    int c1_member1;
  } c1_local_object_0;

  struct s1 {			// gets bogus error
    int s1_member1;
  } s1_local_object_0;

  union u1 {			// gets bogus error
    int u1_member1;
  } u1_local_object_0;

  enum e1 {		// OK using g++ or GCC, but mishandled by Cfront 2.0.
    e1_value1
  } e1_local_object_0;

  typedef int t1;		// OK
}

int main () { return 0; }