Make CXXScopeSpec invalid when incomplete, and propagate that into any
Declarator that depends on it.  This fixes several redundant errors and bad
recoveries.

llvm-svn: 100779
diff --git a/clang/test/SemaCXX/nested-name-spec.cpp b/clang/test/SemaCXX/nested-name-spec.cpp
index c6b11cf..cff04ab 100644
--- a/clang/test/SemaCXX/nested-name-spec.cpp
+++ b/clang/test/SemaCXX/nested-name-spec.cpp
@@ -165,8 +165,7 @@
 void N::f() { } // okay
 
 struct Y;  // expected-note{{forward declaration of 'Y'}}
-Y::foo y; // expected-error{{incomplete type 'Y' named in nested name specifier}} \
-         // expected-error{{no type named 'foo' in}}
+Y::foo y; // expected-error{{incomplete type 'Y' named in nested name specifier}}
 
 X::X() : a(5) { } // expected-error{{use of undeclared identifier 'X'}} \
       // expected-error{{C++ requires a type specifier for all declarations}} \
@@ -224,9 +223,8 @@
 
 // PR6259, invalid case
 namespace test3 {
-  // FIXME: this should really only trigger once
-  class A; // expected-note 2 {{forward declaration}}
+  class A; // expected-note {{forward declaration}}
   void foo(const char *path) {
-    A::execute(path); // expected-error 2 {{incomplete type 'test3::A' named in nested name specifier}}
+    A::execute(path); // expected-error {{incomplete type 'test3::A' named in nested name specifier}}
   }
 }