]> granicus.if.org Git - clang/commitdiff
More missing member goodness.
authorAnders Carlsson <andersca@mac.com>
Sun, 30 Aug 2009 07:09:50 +0000 (07:09 +0000)
committerAnders Carlsson <andersca@mac.com>
Sun, 30 Aug 2009 07:09:50 +0000 (07:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80491 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaCXXScopeSpec.cpp
test/SemaCXX/missing-members.cpp

index 3172c0aa52ca97957f56faa0f7ff9c4d30b28ef6..d89a610caecb00ae10a4f867bfa610d038801c05 100644 (file)
@@ -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())
index 91cde600f90016dc5de2be54297d0a74e537a345..5fd4c54c1d944189b2d0fe91d1fdd564d0941f2d 100644 (file)
@@ -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'}}