diff options
author | Craig Topper <craig.topper@gmail.com> | 2015-12-24 23:58:11 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2015-12-24 23:58:11 +0000 |
commit | 883dd332941f0966d3e5259e61118211b7fe26cd (patch) | |
tree | 4ce0432229f62671c3438314d750d0376fe2be9c | |
parent | 8b27746bde2fa46c50911f8be59fd7bbbd5f3764 (diff) | |
download | bcm5719-llvm-883dd332941f0966d3e5259e61118211b7fe26cd.tar.gz bcm5719-llvm-883dd332941f0966d3e5259e61118211b7fe26cd.zip |
[Sema] ArrayRef-ize ParseObjCStringLiteral and CodeCompleteObjCProtocolReferences. NFC
llvm-svn: 256397
-rw-r--r-- | clang/include/clang/Sema/Sema.h | 7 | ||||
-rw-r--r-- | clang/lib/Parse/ParseObjc.cpp | 12 | ||||
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 13 |
4 files changed, 17 insertions, 25 deletions
diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index df246c04829..45ba43ef881 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -5087,8 +5087,7 @@ public: // ParseObjCStringLiteral - Parse Objective-C string literals. ExprResult ParseObjCStringLiteral(SourceLocation *AtLocs, - Expr **Strings, - unsigned NumStrings); + ArrayRef<Expr *> Strings); ExprResult BuildObjCStringLiteral(SourceLocation AtLoc, StringLiteral *S); @@ -8900,8 +8899,8 @@ public: DeclGroupPtrTy IterationVar); void CodeCompleteObjCSelector(Scope *S, ArrayRef<IdentifierInfo *> SelIdents); - void CodeCompleteObjCProtocolReferences(IdentifierLocPair *Protocols, - unsigned NumProtocols); + void CodeCompleteObjCProtocolReferences( + ArrayRef<IdentifierLocPair> Protocols); void CodeCompleteObjCProtocolDecl(Scope *S); void CodeCompleteObjCInterfaceDecl(Scope *S); void CodeCompleteObjCSuperclass(Scope *S, diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index 8a028b50376..503c551200d 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -503,8 +503,7 @@ ObjCTypeParamList *Parser::parseObjCTypeParamListOrProtocolRefs( if (Tok.is(tok::code_completion)) { // FIXME: If these aren't protocol references, we'll need different // completions. - Actions.CodeCompleteObjCProtocolReferences(protocolIdents.data(), - protocolIdents.size()); + Actions.CodeCompleteObjCProtocolReferences(protocolIdents); cutOffParsing(); // FIXME: Better recovery here?. @@ -1566,8 +1565,7 @@ ParseObjCProtocolReferences(SmallVectorImpl<Decl *> &Protocols, while (1) { if (Tok.is(tok::code_completion)) { - Actions.CodeCompleteObjCProtocolReferences(ProtocolIdents.data(), - ProtocolIdents.size()); + Actions.CodeCompleteObjCProtocolReferences(ProtocolIdents); cutOffParsing(); return true; } @@ -1670,8 +1668,7 @@ void Parser::parseObjCTypeArgsOrProtocolQualifiers( if (!BaseT.isNull() && BaseT->acceptsObjCTypeParams()) { Actions.CodeCompleteOrdinaryName(getCurScope(), Sema::PCC_Type); } else { - Actions.CodeCompleteObjCProtocolReferences(identifierLocPairs.data(), - identifierLocPairs.size()); + Actions.CodeCompleteObjCProtocolReferences(identifierLocPairs); } cutOffParsing(); return; @@ -3287,8 +3284,7 @@ ExprResult Parser::ParseObjCStringLiteral(SourceLocation AtLoc) { AtStrings.push_back(Lit.get()); } - return Actions.ParseObjCStringLiteral(&AtLocs[0], AtStrings.data(), - AtStrings.size()); + return Actions.ParseObjCStringLiteral(AtLocs.data(), AtStrings); } /// ParseObjCBooleanLiteral - diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index 52151f67599..5aa5fc5ebde 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -5926,8 +5926,8 @@ static void AddProtocolResults(DeclContext *Ctx, DeclContext *CurContext, } } -void Sema::CodeCompleteObjCProtocolReferences(IdentifierLocPair *Protocols, - unsigned NumProtocols) { +void Sema::CodeCompleteObjCProtocolReferences( + ArrayRef<IdentifierLocPair> Protocols) { ResultBuilder Results(*this, CodeCompleter->getAllocator(), CodeCompleter->getCodeCompletionTUInfo(), CodeCompletionContext::CCC_ObjCProtocolName); @@ -5938,9 +5938,9 @@ void Sema::CodeCompleteObjCProtocolReferences(IdentifierLocPair *Protocols, // Tell the result set to ignore all of the protocols we have // already seen. // FIXME: This doesn't work when caching code-completion results. - for (unsigned I = 0; I != NumProtocols; ++I) - if (ObjCProtocolDecl *Protocol = LookupProtocol(Protocols[I].first, - Protocols[I].second)) + for (const IdentifierLocPair &Pair : Protocols) + if (ObjCProtocolDecl *Protocol = LookupProtocol(Pair.first, + Pair.second)) Results.Ignore(Protocol); // Add all protocols. diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index c1ac621b57a..863037d6de5 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -32,24 +32,21 @@ using namespace sema; using llvm::makeArrayRef; ExprResult Sema::ParseObjCStringLiteral(SourceLocation *AtLocs, - Expr **strings, - unsigned NumStrings) { - StringLiteral **Strings = reinterpret_cast<StringLiteral**>(strings); - + ArrayRef<Expr *> Strings) { // Most ObjC strings are formed out of a single piece. However, we *can* // have strings formed out of multiple @ strings with multiple pptokens in // each one, e.g. @"foo" "bar" @"baz" "qux" which need to be turned into one // StringLiteral for ObjCStringLiteral to hold onto. - StringLiteral *S = Strings[0]; + StringLiteral *S = cast<StringLiteral>(Strings[0]); // If we have a multi-part string, merge it all together. - if (NumStrings != 1) { + if (Strings.size() != 1) { // Concatenate objc strings. SmallString<128> StrBuf; SmallVector<SourceLocation, 8> StrLocs; - for (unsigned i = 0; i != NumStrings; ++i) { - S = Strings[i]; + for (Expr *E : Strings) { + S = cast<StringLiteral>(E); // ObjC strings can't be wide or UTF. if (!S->isAscii()) { |