Test the lookup I wasn't sure would be done properly after the last patch.

Clang reasonably adds all the base specifiers in one pass;  this is now required
for correctness to prevent lookup from going mad.  But this has the advantage of
establishing the correct context when looking up base specifiers, which will be
important for access control.

llvm-svn: 91791
This commit is contained in:
John McCall 2009-12-20 05:57:29 +00:00
parent 0209f50c0d
commit bffb990c23
1 changed files with 25 additions and 5 deletions

View File

@ -1,9 +1,29 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
// PR5741
struct A {
struct B { };
struct C;
};
namespace test0 {
struct A {
struct B { };
struct C;
};
struct A::C : B { };
struct A::C : B { };
}
namespace test1 {
struct Opaque1 {};
struct Opaque2 {};
struct A {
struct B { B(Opaque1); };
};
struct B {
B(Opaque2);
};
struct C : A, B {
// Apparently the base-or-member lookup is actually ambiguous
// without this qualification.
C() : A(), test1::B(Opaque2()) {}
};
}