diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-11-17 23:31:36 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-11-17 23:31:36 +0000 |
commit | 60b01cc44855d62979f76dc4cdffa4277f321049 (patch) | |
tree | 2be934d1d202e4ee0b9589eb54b397095a5eae40 | |
parent | 36ecb0461977afeb8620d773e938ab4719718a5f (diff) |
Rename Objective-C message send completion functions to indicate that we're referring to message sends
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89164 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Parse/Action.h | 14 | ||||
-rw-r--r-- | lib/Parse/ParseObjc.cpp | 4 | ||||
-rw-r--r-- | lib/Sema/Sema.h | 5 | ||||
-rw-r--r-- | lib/Sema/SemaCodeComplete.cpp | 18 |
4 files changed, 21 insertions, 20 deletions
diff --git a/include/clang/Parse/Action.h b/include/clang/Parse/Action.h index f656905219..87fa63e42c 100644 --- a/include/clang/Parse/Action.h +++ b/include/clang/Parse/Action.h @@ -2328,25 +2328,27 @@ public: /// \param S the scope in which the operator keyword occurs. virtual void CodeCompleteObjCProperty(Scope *S, ObjCDeclSpec &ODS) { } - /// \brief Code completion for an ObjC factory method (from within a message - /// expression). + /// \brief Code completion for an ObjC message expression that refers to + /// a class method. /// /// This code completion action is invoked when the code-completion token is /// found after the class name. /// /// \param S the scope in which the message expression occurs. /// \param FName the factory name. - virtual void CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName){ } + /// \param FNameLoc the source location of the factory name. + virtual void CodeCompleteObjCClassMessage(Scope *S, IdentifierInfo *FName, + SourceLocation FNameLoc){ } - /// \brief Code completion for an ObjC instance method (from within a message - /// expression). + /// \brief Code completion for an ObjC message expression that refers to + /// an instance method. /// /// This code completion action is invoked when the code-completion token is /// found after the receiver expression. /// /// \param S the scope in which the operator keyword occurs. /// \param Receiver an expression for the receiver of the message. - virtual void CodeCompleteObjCInstanceMethod(Scope *S, ExprTy *Receiver) { } + virtual void CodeCompleteObjCInstanceMessage(Scope *S, ExprTy *Receiver) { } //@} }; diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp index 6a2c213553..f0b1e9f3ef 100644 --- a/lib/Parse/ParseObjc.cpp +++ b/lib/Parse/ParseObjc.cpp @@ -1569,9 +1569,9 @@ Parser::ParseObjCMessageExpressionBody(SourceLocation LBracLoc, ExprArg ReceiverExpr) { if (Tok.is(tok::code_completion)) { if (ReceiverName) - Actions.CodeCompleteObjCFactoryMethod(CurScope, ReceiverName); + Actions.CodeCompleteObjCClassMessage(CurScope, ReceiverName, NameLoc); else - Actions.CodeCompleteObjCInstanceMethod(CurScope, ReceiverExpr.release()); + Actions.CodeCompleteObjCInstanceMessage(CurScope, ReceiverExpr.get()); ConsumeToken(); } // Parse objc-selector diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index 637075be71..b3db88a7ba 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -4003,8 +4003,9 @@ public: virtual void CodeCompleteOperatorName(Scope *S); virtual void CodeCompleteObjCProperty(Scope *S, ObjCDeclSpec &ODS); - virtual void CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName); - virtual void CodeCompleteObjCInstanceMethod(Scope *S, ExprTy *Receiver); + virtual void CodeCompleteObjCClassMessage(Scope *S, IdentifierInfo *FName, + SourceLocation FNameLoc); + virtual void CodeCompleteObjCInstanceMessage(Scope *S, ExprTy *Receiver); //@} //===--------------------------------------------------------------------===// diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index 70af446bff..563ba6b764 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/lib/Sema/SemaCodeComplete.cpp @@ -1624,13 +1624,11 @@ static void AddObjCMethods(ObjCContainerDecl *Container, AddObjCMethods(Impl, WantInstanceMethods, CurContext, Results); } -void Sema::CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName) { +void Sema::CodeCompleteObjCClassMessage(Scope *S, IdentifierInfo *FName, + SourceLocation FNameLoc) { typedef CodeCompleteConsumer::Result Result; ObjCInterfaceDecl *CDecl = 0; - // FIXME: Pass this in! - SourceLocation NameLoc; - if (FName->isStr("super")) { // We're sending a message to "super". if (ObjCMethodDecl *CurMethod = getCurMethodDecl()) { @@ -1652,8 +1650,8 @@ void Sema::CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName) { QualType SuperTy = Context.getObjCInterfaceType(CDecl); SuperTy = Context.getObjCObjectPointerType(SuperTy); OwningExprResult Super - = Owned(new (Context) ObjCSuperExpr(NameLoc, SuperTy)); - return CodeCompleteObjCInstanceMethod(S, (Expr *)Super.get()); + = Owned(new (Context) ObjCSuperExpr(FNameLoc, SuperTy)); + return CodeCompleteObjCInstanceMessage(S, (Expr *)Super.get()); } // Okay, we're calling a factory method in our superclass. @@ -1663,7 +1661,7 @@ void Sema::CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName) { // If the given name refers to an interface type, retrieve the // corresponding declaration. if (!CDecl) - if (TypeTy *Ty = getTypeName(*FName, NameLoc, S, 0, false)) { + if (TypeTy *Ty = getTypeName(*FName, FNameLoc, S, 0, false)) { QualType T = GetTypeFromParser(Ty, 0); if (!T.isNull()) if (const ObjCInterfaceType *Interface = T->getAs<ObjCInterfaceType>()) @@ -1673,9 +1671,9 @@ void Sema::CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName) { if (!CDecl && FName->isStr("super")) { // "super" may be the name of a variable, in which case we are // probably calling an instance method. - OwningExprResult Super = ActOnDeclarationNameExpr(S, NameLoc, FName, + OwningExprResult Super = ActOnDeclarationNameExpr(S, FNameLoc, FName, false, 0, false); - return CodeCompleteObjCInstanceMethod(S, (Expr *)Super.get()); + return CodeCompleteObjCInstanceMessage(S, (Expr *)Super.get()); } // Add all of the factory methods in this Objective-C class, its protocols, @@ -1689,7 +1687,7 @@ void Sema::CodeCompleteObjCFactoryMethod(Scope *S, IdentifierInfo *FName) { HandleCodeCompleteResults(this, CodeCompleter, Results.data(),Results.size()); } -void Sema::CodeCompleteObjCInstanceMethod(Scope *S, ExprTy *Receiver) { +void Sema::CodeCompleteObjCInstanceMessage(Scope *S, ExprTy *Receiver) { typedef CodeCompleteConsumer::Result Result; Expr *RecExpr = static_cast<Expr *>(Receiver); |