From bffb990c233139acc8bd8a148ca34df186d85d38 Mon Sep 17 00:00:00 2001 From: John McCall Date: Sun, 20 Dec 2009 05:57:29 +0000 Subject: [PATCH] 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 --- .../basic.lookup/basic.lookup.unqual/p7.cpp | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp b/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp index f22e4a467eef..5f63392469cd 100644 --- a/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp +++ b/clang/test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp @@ -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()) {} + }; +}