80 lines
2.1 KiB
C
80 lines
2.1 KiB
C
// { dg-do assemble }
|
|
|
|
// Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
|
|
// Contributed by Nathan Sidwell 22 Apr 1999 <nathan@acm.org>
|
|
// derived from a bug report by <rch@larissa.sd.bi.ruhr-uni-bochum.de>
|
|
// http://gcc.gnu.org/ml/gcc-bugs/1999-04n/msg00631.html
|
|
// the code is wrong, but we fell over badly
|
|
|
|
|
|
struct A {
|
|
int A::fn(); // { dg-error "extra qualification" }
|
|
int A::m; // { dg-error "extra qualification" }
|
|
struct e;
|
|
struct A::e {int i;}; // { dg-error "extra qualification" "qual" }
|
|
// { dg-error "anonymous struct" "anon" { target *-*-* } 14 }
|
|
struct A::expand { // { dg-error "qualified name" }
|
|
int m;
|
|
};
|
|
struct Z;
|
|
expand me; // { dg-error "'expand' does not name a type" }
|
|
void foo(struct A::e);
|
|
void foo(struct A::z); // { dg-error "does not name a type" }
|
|
};
|
|
|
|
struct Q;
|
|
struct B {
|
|
struct A::fink { // { dg-error "does not name a class before" }
|
|
int m;
|
|
};
|
|
struct A::Z { // { dg-error "does not enclose" } A::Z not a member of B
|
|
int m;
|
|
};
|
|
int m;
|
|
int n;
|
|
struct ::Q { // { dg-error "global qual" } ::Q not a member of B
|
|
int m;
|
|
};
|
|
int A::fn() { // { dg-error "cannot define member" } A::fn not a member of B
|
|
return 0;
|
|
}
|
|
void fn(struct ::Q &);
|
|
void foo(struct A::y); // { dg-error "does not name a type" } no such member
|
|
};
|
|
|
|
struct ::C { // { dg-error "invalid before" } extra qualification
|
|
int i;
|
|
};
|
|
|
|
namespace N {
|
|
int fn();
|
|
struct F;
|
|
}
|
|
|
|
namespace NMS
|
|
{
|
|
void NMS::fn(); // { dg-error "explicit qual" }
|
|
int NMS::i; // { dg-error "explicit qual" }
|
|
struct NMS::D { // { dg-error "does not name a class" }
|
|
int i;
|
|
};
|
|
struct N::E { // { dg-error "does not name a class" } no such type
|
|
int i;
|
|
};
|
|
struct ::F { // { dg-error "global qual" } no such type
|
|
int i;
|
|
};
|
|
int N::fn() { // { dg-error "namespace" } N::fn not a member of NMS
|
|
return 0;
|
|
}
|
|
struct N::F { // { dg-error "namespace" } N::F not a member of NMS
|
|
int i;
|
|
};
|
|
}
|
|
|
|
NMS::D thing; // { dg-error "'D' in namespace 'NMS' does not name a type" }
|
|
void NMS::fn()
|
|
{
|
|
i = 3;
|
|
}
|