summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseCXXInlineMethods.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-08-20 22:52:58 +0000
committerDouglas Gregor <dgregor@apple.com>2009-08-20 22:52:58 +0000
commit3447e76762fc322a6d4489eb3511a4c25d0a0c24 (patch)
tree505083263f15a82e451f7589bac2642f038601dc /clang/lib/Parse/ParseCXXInlineMethods.cpp
parentfa2b97e61a915354bef1b28c35776eb362888606 (diff)
downloadbcm5719-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.cpp12
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);
OpenPOWER on IntegriCloud