Weaken an assertion that isn't true for invalid input.
authorNico Weber <nicolasweber@gmx.de>
Fri, 30 Jan 2015 01:48:49 +0000 (01:48 +0000)
committerNico Weber <nicolasweber@gmx.de>
Fri, 30 Jan 2015 01:48:49 +0000 (01:48 +0000)
llvm-svn: 227540

clang/lib/Sema/SemaDecl.cpp
clang/test/SemaTemplate/dependent-names.cpp

index cd6ff6c..eb21dff 100644 (file)
@@ -5578,8 +5578,9 @@ Sema::ActOnVariableDeclarator(Scope *S, Declarator &D, DeclContext *DC,
         }
       }
     } else {
-      assert(D.getName().getKind() != UnqualifiedId::IK_TemplateId &&
-             "should have a 'template<>' for this decl");
+      assert(
+          (Invalid || D.getName().getKind() != UnqualifiedId::IK_TemplateId) &&
+          "should have a 'template<>' for this decl");
     }
 
     if (IsVariableTemplateSpecialization) {
index 011e073..d5c9d66 100644 (file)
@@ -414,3 +414,8 @@ namespace PR19936 {
   template<typename T> decltype(*T()) f() {} // expected-error {{redefinition}}
   template<typename T> decltype(T() * T()) g() {} // expected-error {{redefinition}}
 }
+
+template <typename> struct CT2 {
+  template <class U> struct X;
+};
+template <typename T> int CT2<int>::X<>; // expected-error {{template parameter list matching the non-templated nested type 'CT2<int>' should be empty}}