diff options
author | John McCall <rjmccall@apple.com> | 2009-09-11 21:02:39 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-09-11 21:02:39 +0000 |
commit | bbbcdd9cc06b6078939129330ecc9bda3310984d (patch) | |
tree | b04819d9e491c44c7baa2564eca6998eeb4e5b10 /lib/Parse/ParseDeclCXX.cpp | |
parent | 389a0e8b6568932780dfd500790494e5fb598058 (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.cpp | 16 |
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), |