Extend the use of QualifiedNameType to the creation of class template
specialization names. This way, we keep track of sugared types like

  std::vector<Real>

I believe we are now using QualifiedNameTypes everywhere we can. Next
step: QualifiedDeclRefExprs.

llvm-svn: 67268
diff --git a/clang/test/SemaCXX/qualified-names-diag.cpp b/clang/test/SemaCXX/qualified-names-diag.cpp
index 151b924..c3bd47f 100644
--- a/clang/test/SemaCXX/qualified-names-diag.cpp
+++ b/clang/test/SemaCXX/qualified-names-diag.cpp
@@ -15,6 +15,8 @@
 
 namespace bar {
   typedef int y;
+
+  struct incomplete; // expected-note{{forward declaration of 'struct incomplete'}}
 }
 void test() {
   foo::wibble::x a;
@@ -23,6 +25,9 @@
 
   ::foo::wibble::bar::wonka::x::y c;
   c + b; // expected-error{{invalid operands to binary expression ('::foo::wibble::bar::wonka::x::y' (aka 'struct y') and '::bar::y' (aka 'int'))}}
+
+  (void)sizeof(bar::incomplete); // expected-error{{invalid application of 'sizeof' to an incomplete type 'bar::incomplete' (aka 'struct incomplete')}}
 }
 
 int ::foo::wibble::bar::wonka::x::y::* ptrmem;
+