aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-08-30 07:09:50 +0000
committerAnders Carlsson <andersca@mac.com>2009-08-30 07:09:50 +0000
commita31d5f70e02d89631d07be162796a2d6bd74e561 (patch)
treed53c159de7764dfe4875bcfac66a117fa82f7713
parent639bfc7b1e55e01dd38d2ef399366b5efa55a9a7 (diff)
More missing member goodness.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80491 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaCXXScopeSpec.cpp9
-rw-r--r--test/SemaCXX/missing-members.cpp10
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/Sema/SemaCXXScopeSpec.cpp b/lib/Sema/SemaCXXScopeSpec.cpp
index 3172c0aa52..d89a610cae 100644
--- a/lib/Sema/SemaCXXScopeSpec.cpp
+++ b/lib/Sema/SemaCXXScopeSpec.cpp
@@ -310,9 +310,12 @@ Sema::CXXScopeTy *Sema::ActOnCXXNestedNameSpecifier(Scope *S,
unsigned DiagID;
if (SD)
DiagID = diag::err_expected_class_or_namespace;
- else if (SS.isSet())
- DiagID = diag::err_typecheck_no_member_deprecated;
- else
+ else if (SS.isSet()) {
+ DiagnoseMissingMember(IdLoc, DeclarationName(&II),
+ (NestedNameSpecifier *)SS.getScopeRep(),
+ SS.getRange());
+ return 0;
+ } else
DiagID = diag::err_undeclared_var_use;
if (SS.isSet())
diff --git a/test/SemaCXX/missing-members.cpp b/test/SemaCXX/missing-members.cpp
index 91cde600f9..5fd4c54c1d 100644
--- a/test/SemaCXX/missing-members.cpp
+++ b/test/SemaCXX/missing-members.cpp
@@ -13,6 +13,16 @@ void f() {
::i; // expected-error {{no member named 'i' in the global namespace}}
}
+namespace B {
+ class B { };
+}
+
+void g() {
+ A::B::D::E; // expected-error {{no member named 'D' in namespace 'A::B'}}
+ B::B::C::D; // expected-error {{no member named 'C' in class 'B::B'}}
+ ::C::D; // expected-error {{no member named 'C' in the global namespace}}
+}
+
int A::B::i = 10; // expected-error {{no member named 'i' in namespace 'A::B'}}
int A::B::C::i = 10; // expected-error {{no member named 'i' in class 'A::B::C'}}
int A::B::S::i = 10; // expected-error {{no member named 'i' in struct 'A::B::S'}}