]> granicus.if.org Git - clang/commitdiff
Test the lookup I wasn't sure would be done properly after the last patch.
authorJohn McCall <rjmccall@apple.com>
Sun, 20 Dec 2009 05:57:29 +0000 (05:57 +0000)
committerJohn McCall <rjmccall@apple.com>
Sun, 20 Dec 2009 05:57:29 +0000 (05:57 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91791 91177308-0d34-0410-b5e6-96231b3b80d8

test/CXX/basic/basic.lookup/basic.lookup.unqual/p7.cpp

index f22e4a467eefdff240ff57bffb172c307ae19e35..5f63392469cdc66320a071e7a69e5d048f8c66f6 100644 (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()) {}
+  };
+}