diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-10-03 06:36:36 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-10-03 06:36:36 +0000 |
| commit | dfd657064376ff288fe23318ccc51164b61677ef (patch) | |
| tree | 7e2e177cf72cfcd921e3073c636c8c521dc4ce1b /clang/lib/Parse/ParseObjc.cpp | |
| parent | 3849394b819c05fdbd1c3437c263b75482ebdb34 (diff) | |
| download | bcm5719-llvm-dfd657064376ff288fe23318ccc51164b61677ef.tar.gz bcm5719-llvm-dfd657064376ff288fe23318ccc51164b61677ef.zip | |
Pass from the parser the locations of selector identifiers when creating
objc method decls.
They are not stored in the AST yet.
llvm-svn: 140984
Diffstat (limited to 'clang/lib/Parse/ParseObjc.cpp')
| -rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index 44808c89224..1b482258373 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -972,6 +972,7 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, } SmallVector<IdentifierInfo *, 12> KeyIdents; + SmallVector<SourceLocation, 12> KeyLocs; SmallVector<Sema::ObjCArgInfo, 12> ArgInfos; ParseScope PrototypeScope(this, Scope::FunctionPrototypeScope|Scope::DeclScope); @@ -1027,6 +1028,7 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, ArgInfos.push_back(ArgInfo); KeyIdents.push_back(SelIdent); + KeyLocs.push_back(selLoc); // Make sure the attributes persist. allParamAttrs.takeAllFrom(paramAttrs.getPool()); @@ -1044,8 +1046,7 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, } // Check for another keyword selector. - SourceLocation Loc; - SelIdent = ParseObjCSelectorPiece(Loc); + SelIdent = ParseObjCSelectorPiece(selLoc); if (!SelIdent && Tok.isNot(tok::colon)) break; // We have a selector or a colon, continue parsing. @@ -1088,7 +1089,7 @@ Decl *Parser::ParseObjCMethodDecl(SourceLocation mLoc, Decl *Result = Actions.ActOnMethodDeclaration(getCurScope(), mLoc, Tok.getLocation(), mType, DSRet, ReturnType, - selLoc, Sel, &ArgInfos[0], + KeyLocs, Sel, &ArgInfos[0], CParamInfo.data(), CParamInfo.size(), methodAttrs.getList(), MethodImplKind, isVariadic, MethodDefinition); |

