summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseDeclCXX.cpp
diff options
context:
space:
mode:
authorLarisse Voufo <lvoufo@google.com>2013-06-21 00:08:46 +0000
committerLarisse Voufo <lvoufo@google.com>2013-06-21 00:08:46 +0000
commit725de3e14ff288a92bed36241cdc2c22be55ee0e (patch)
tree75a18311dbe16010eaf81c924f5d03f4f292fe09 /clang/lib/Parse/ParseDeclCXX.cpp
parent2c75f11e86ee8bff73a935b7542712f5255f4535 (diff)
downloadbcm5719-llvm-725de3e14ff288a92bed36241cdc2c22be55ee0e.tar.gz
bcm5719-llvm-725de3e14ff288a92bed36241cdc2c22be55ee0e.zip
Bug Fix: Template explicit instantiations should not have definitions (FixIts yet to be tested.)
llvm-svn: 184503
Diffstat (limited to 'clang/lib/Parse/ParseDeclCXX.cpp')
-rw-r--r--clang/lib/Parse/ParseDeclCXX.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index f09aaf5c0bb..68d8e6ba4d0 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/lib/Parse/ParseDeclCXX.cpp
@@ -1539,6 +1539,14 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind,
} else {
if (TUK != Sema::TUK_Declaration && TUK != Sema::TUK_Definition)
ProhibitAttributes(attrs);
+
+ if (TUK == Sema::TUK_Definition &&
+ TemplateInfo.Kind == ParsedTemplateInfo::ExplicitInstantiation) {
+ // If the declarator-id is not a template-id, issue a diagnostic and
+ // recover by ignoring the 'template' keyword.
+ Diag(Tok, diag::err_template_defn_explicit_instantiation)
+ << 1 << FixItHint::CreateRemoval(TemplateInfo.TemplateLoc);
+ }
bool IsDependent = false;
OpenPOWER on IntegriCloud