aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Sema/SemaDecl.cpp6
-rw-r--r--test/SemaCXX/qualified-id-lookup.cpp14
2 files changed, 16 insertions, 4 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 49719ab4f5..351694c74d 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -343,11 +343,11 @@ Decl *Sema::LookupDecl(DeclarationName Name, unsigned NSI, Scope *S,
}
}
+ if (!LookInParent && !Ctx->isTransparentContext())
+ return 0;
+
Ctx = Ctx->getParent();
}
-
- if (!LookInParent && !Ctx->isTransparentContext())
- return 0;
}
}
diff --git a/test/SemaCXX/qualified-id-lookup.cpp b/test/SemaCXX/qualified-id-lookup.cpp
index 0ef8e69107..c0d1ca370d 100644
--- a/test/SemaCXX/qualified-id-lookup.cpp
+++ b/test/SemaCXX/qualified-id-lookup.cpp
@@ -1,5 +1,4 @@
// RUN: clang -fsyntax-only -verify %s
-
namespace Ns {
int f(); // expected-note{{previous declaration is here}}
@@ -71,5 +70,18 @@ namespace a {
}
}
+// PR clang/3291
+namespace a {
+ namespace a { // A1
+ namespace a { // A2
+ int i;
+ }
+ }
+}
+void test_a() {
+ a::a::i = 3; // expected-error{{no member named 'i'}}
+ a::a::a::i = 4;
+}
+