diff options
author | Larisse Voufo <lvoufo@google.com> | 2013-06-21 00:08:46 +0000 |
---|---|---|
committer | Larisse Voufo <lvoufo@google.com> | 2013-06-21 00:08:46 +0000 |
commit | 725de3e14ff288a92bed36241cdc2c22be55ee0e (patch) | |
tree | 75a18311dbe16010eaf81c924f5d03f4f292fe09 /clang/lib/Parse/ParseDeclCXX.cpp | |
parent | 2c75f11e86ee8bff73a935b7542712f5255f4535 (diff) | |
download | bcm5719-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.cpp | 8 |
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; |