]> granicus.if.org Git - clang/commitdiff
Rename Objective-C message send completion functions to indicate that we're referring...
authorDouglas Gregor <dgregor@apple.com>
Tue, 17 Nov 2009 23:31:36 +0000 (23:31 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 17 Nov 2009 23:31:36 +0000 (23:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89164 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Parse/Action.h
lib/Parse/ParseObjc.cpp
lib/Sema/Sema.h
lib/Sema/SemaCodeComplete.cpp

index f656905219212d85be710fda3fb37157894594bf..87fa63e42cf81e7e830e45f8d8be763c984a8ada 100644 (file)
@@ -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) { }
   //@}
 };
 
index 6a2c2135539d713f1920dbe2eb1c7cd5b6313c45..f0b1e9f3efb999ef40ff66483b88767fc5415fa8 100644 (file)
@@ -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
index 637075be715d82b982a3d4c2b942d5659e9352e3..b3db88a7bae82b43121eee673062e94be0cc37fa 100644 (file)
@@ -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);
   //@}
   
   //===--------------------------------------------------------------------===//
index 70af446bff2fd41b154e6e0031154416479d712c..563ba6b7641d9505c4296e3d7baea9aa5355ffc9 100644 (file)
@@ -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);