aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseDeclCXX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Parse/ParseDeclCXX.cpp')
-rw-r--r--lib/Parse/ParseDeclCXX.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp
index 1bbf411874..61182ef9cd 100644
--- a/lib/Parse/ParseDeclCXX.cpp
+++ b/lib/Parse/ParseDeclCXX.cpp
@@ -460,7 +460,8 @@ void Parser::ParseClassSpecifier(DeclSpec &DS,
Attr,
Action::MultiTemplateParamsArg(Actions,
&(*TemplateParams)[0],
- TemplateParams->size()));
+ TemplateParams->size()),
+ AS);
else
TagOrTempResult = Actions.ActOnTag(CurScope, TagType, TK, StartLoc, SS, Name,
NameLoc, Attr, AS);
@@ -615,7 +616,7 @@ AccessSpecifier Parser::getAccessSpecifierIfPresent() const
/// ::[opt] nested-name-specifier template[opt] unqualified-id ';'[TODO]
/// using-declaration [TODO]
/// [C++0x] static_assert-declaration
-/// template-declaration [TODO]
+/// template-declaration
/// [GNU] '__extension__' member-declaration
///
/// member-declarator-list:
@@ -638,6 +639,10 @@ Parser::DeclTy *Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS) {
if (Tok.is(tok::kw_static_assert))
return ParseStaticAssertDeclaration();
+ if (Tok.is(tok::kw_template))
+ return ParseTemplateDeclarationOrSpecialization(Declarator::MemberContext,
+ AS);
+
// Handle: member-declaration ::= '__extension__' member-declaration
if (Tok.is(tok::kw___extension__)) {
// __extension__ silences extension warnings in the subexpression.