diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-08-20 22:52:58 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-08-20 22:52:58 +0000 |
commit | 3447e76762fc322a6d4489eb3511a4c25d0a0c24 (patch) | |
tree | 505083263f15a82e451f7589bac2642f038601dc /clang/lib/Parse/ParseCXXInlineMethods.cpp | |
parent | fa2b97e61a915354bef1b28c35776eb362888606 (diff) | |
download | bcm5719-llvm-3447e76762fc322a6d4489eb3511a4c25d0a0c24.tar.gz bcm5719-llvm-3447e76762fc322a6d4489eb3511a4c25d0a0c24.zip |
Initial support for parsing and representation of member function templates.
llvm-svn: 79570
Diffstat (limited to 'clang/lib/Parse/ParseCXXInlineMethods.cpp')
-rw-r--r-- | clang/lib/Parse/ParseCXXInlineMethods.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseCXXInlineMethods.cpp b/clang/lib/Parse/ParseCXXInlineMethods.cpp index ca9fc322da0..80feff42d7f 100644 --- a/clang/lib/Parse/ParseCXXInlineMethods.cpp +++ b/clang/lib/Parse/ParseCXXInlineMethods.cpp @@ -21,17 +21,23 @@ using namespace clang; /// Declarator is a well formed C++ inline method definition. Now lex its body /// and store its tokens for parsing after the C++ class is complete. Parser::DeclPtrTy -Parser::ParseCXXInlineMethodDef(AccessSpecifier AS, Declarator &D) { +Parser::ParseCXXInlineMethodDef(AccessSpecifier AS, Declarator &D, + const ParsedTemplateInfo &TemplateInfo) { assert(D.getTypeObject(0).Kind == DeclaratorChunk::Function && "This isn't a function declarator!"); assert((Tok.is(tok::l_brace) || Tok.is(tok::colon) || Tok.is(tok::kw_try)) && "Current token not a '{', ':' or 'try'!"); + Action::MultiTemplateParamsArg TemplateParams(Actions, + TemplateInfo.TemplateParams? TemplateInfo.TemplateParams->data() : 0, + TemplateInfo.TemplateParams? TemplateInfo.TemplateParams->size() : 0); DeclPtrTy FnD; if (D.getDeclSpec().isFriendSpecified()) + // FIXME: Friend templates FnD = Actions.ActOnFriendDecl(CurScope, &D, /*IsDefinition*/ true); - else - FnD = Actions.ActOnCXXMemberDeclarator(CurScope, AS, D, 0, 0); + else // FIXME: pass template information through + FnD = Actions.ActOnCXXMemberDeclarator(CurScope, AS, D, + move(TemplateParams), 0, 0); HandleMemberFunctionDefaultArgs(D, FnD); |