aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseDeclCXX.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2009-09-11 21:02:39 +0000
committerJohn McCall <rjmccall@apple.com>2009-09-11 21:02:39 +0000
commitbbbcdd9cc06b6078939129330ecc9bda3310984d (patch)
treeb04819d9e491c44c7baa2564eca6998eeb4e5b10 /lib/Parse/ParseDeclCXX.cpp
parent389a0e8b6568932780dfd500790494e5fb598058 (diff)
Alter Action's friend interface to prepare for templated friend declarations and
to stop making promises we can't currently keep. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81571 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseDeclCXX.cpp')
-rw-r--r--lib/Parse/ParseDeclCXX.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp
index bb268e70c0..b9a0d6165e 100644
--- a/lib/Parse/ParseDeclCXX.cpp
+++ b/lib/Parse/ParseDeclCXX.cpp
@@ -1019,7 +1019,7 @@ void Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS,
if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
return;
- Actions.ActOnFriendDecl(CurScope, &DS, /*IsDefinition*/ false);
+ Actions.ActOnFriendTypeDecl(CurScope, DS);
} else
Actions.ParsedFreeStandingDeclSpec(CurScope, DS);
@@ -1122,15 +1122,17 @@ void Parser::ParseCXXClassMemberDeclaration(AccessSpecifier AS,
// this call will *not* return the created decl; It will return null.
// See Sema::ActOnCXXMemberDeclarator for details.
+ Action::MultiTemplateParamsArg TemplateParams(Actions,
+ TemplateInfo.TemplateParams? TemplateInfo.TemplateParams->data() : 0,
+ TemplateInfo.TemplateParams? TemplateInfo.TemplateParams->size() : 0);
+
DeclPtrTy ThisDecl;
if (DS.isFriendSpecified()) {
- // TODO: handle initializers, bitfields, 'delete', friend templates
- ThisDecl = Actions.ActOnFriendDecl(CurScope, &DeclaratorInfo,
- /*IsDefinition*/ false);
+ // TODO: handle initializers, bitfields, 'delete'
+ ThisDecl = Actions.ActOnFriendFunctionDecl(CurScope, DeclaratorInfo,
+ /*IsDefinition*/ false,
+ move(TemplateParams));
} else {
- Action::MultiTemplateParamsArg TemplateParams(Actions,
- TemplateInfo.TemplateParams? TemplateInfo.TemplateParams->data() : 0,
- TemplateInfo.TemplateParams? TemplateInfo.TemplateParams->size() : 0);
ThisDecl = Actions.ActOnCXXMemberDeclarator(CurScope, AS,
DeclaratorInfo,
move(TemplateParams),