]> granicus.if.org Git - clang/commitdiff
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)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227540 91177308-0d34-0410-b5e6-96231b3b80d8

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

index cd6ff6ce5820994e28ceac2fc83af8a1543bf37e..eb21dff766f10bd913ce96921808ac13e4a883d2 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 011e073a727a8801679abdb65dd666a5f744a8e5..d5c9d66c45266de026612b19730ee11bcb3035d7 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}}