]> granicus.if.org Git - clang/commitdiff
Finish defining Action API for message expressions.
authorSteve Naroff <snaroff@apple.com>
Mon, 17 Sep 2007 21:01:15 +0000 (21:01 +0000)
committerSteve Naroff <snaroff@apple.com>
Mon, 17 Sep 2007 21:01:15 +0000 (21:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42059 91177308-0d34-0410-b5e6-96231b3b80d8

Parse/ParseObjc.cpp
Sema/Sema.h
Sema/SemaExpr.cpp
include/clang/Parse/Action.h

index d61d621093de41ffcec6e3b4ebecbdd4d20a79aa..87cc277addd3b6e466465be16c49e3a69ace6f5f 100644 (file)
@@ -1051,11 +1051,18 @@ Parser::ExprResult Parser::ParseObjCMessageExpression() {
   }
   ConsumeBracket(); // consume ']'
   
+  if (KeyInfo.size()) {
+    // We've just parsed a keyword message.
+    if (ReceiverName) 
+      return Actions.ActOnKeywordMessage(ReceiverName, 
+                                            &KeyInfo[0], KeyInfo.size());
+    return Actions.ActOnKeywordMessage(ReceiverExpr, 
+                                            &KeyInfo[0], KeyInfo.size());
+  }
+  // We've just parsed a unary message (a message with no arguments).
   if (ReceiverName) 
-    return Actions.ActOnMessageExpression(ReceiverName, 
-                                          &KeyInfo[0], KeyInfo.size());
-  return Actions.ActOnMessageExpression(ReceiverExpr, 
-                                          &KeyInfo[0], KeyInfo.size());
+    return Actions.ActOnUnaryMessage(ReceiverName, selIdent);
+  return Actions.ActOnUnaryMessage(ReceiverExpr, selIdent);
 }
 
 Parser::ExprResult Parser::ParseObjCStringLiteral() {
index c1d3a3a05a8a225742a070622f497e667201c0fa..52724440866a447c632ad31d80fc77196e2a2a03 100644 (file)
@@ -371,6 +371,19 @@ public:
   virtual DeclTy *ObjcBuildMethodDeclaration(SourceLocation MethodLoc, 
                    tok::TokenKind MethodType, TypeTy *ReturnType,
                    IdentifierInfo *SelectorName, AttributeList *AttrList);
+                    
+  // This actions handles keyword message to classes.
+  virtual ExprResult ActOnKeywordMessage(IdentifierInfo *receivingClassName, 
+    ObjcKeywordMessage *Keywords, unsigned NumKeywords);
+  // This action handles keyword messages to instances.
+  virtual ExprResult ActOnKeywordMessage(ExprTy *receiver, 
+    ObjcKeywordMessage *Keywords, unsigned NumKeywords);
+    
+  // This actions handles keyword message to classes.
+  virtual ExprResult ActOnUnaryMessage(IdentifierInfo *receivingClassName, 
+                                    IdentifierInfo *selName);
+  // This action handles keyword messages to instances.
+  virtual ExprResult ActOnUnaryMessage(ExprTy *receiver, IdentifierInfo *sName);
 private:
   // UsualUnaryConversions - promotes integers (C99 6.3.1.1p2) and converts
   // functions and arrays to their respective pointers (C99 6.3.2.1). 
index da1981f9a06d92bbd3d66a36ad73913e11082459..d7136a387ab72feb9a61d5ba414fc87384124ae5 100644 (file)
@@ -1855,3 +1855,29 @@ Sema::ExprResult Sema::ParseObjCEncodeExpression(SourceLocation AtLoc,
   QualType t = Context.getPointerType(Context.CharTy);
   return new ObjCEncodeExpr(t, EncodedType, AtLoc, RParenLoc);
 }
+
+// This actions handles keyword message to classes.
+Sema::ExprResult Sema::ActOnKeywordMessage(IdentifierInfo *receivingClassName, 
+    ObjcKeywordMessage *Keywords, unsigned NumKeywords)
+{
+  return 0;
+}
+
+// This action handles keyword messages to instances.
+Sema::ExprResult Sema::ActOnKeywordMessage(ExprTy *receiver, 
+    ObjcKeywordMessage *Keywords, unsigned NumKeywords) {
+  return 0;
+}
+    
+// This actions handles keyword message to classes.
+Sema::ExprResult Sema::ActOnUnaryMessage(IdentifierInfo *receivingClassName, 
+                                         IdentifierInfo *selName) {
+  return 0;
+}
+
+// This action handles keyword messages to instances.
+Sema::ExprResult Sema::ActOnUnaryMessage(ExprTy *receiver, 
+                                         IdentifierInfo *selName) {
+  return 0;
+}
+
index 2d7e8f452c6a255fbc182b6037027305d21632e0..548ff1a7d74931f7514eb199c11de4c162ed4d6c 100644 (file)
@@ -460,15 +460,24 @@ public:
     return 0;
   }
   // This actions handles keyword message to classes.
-  virtual DeclTy *ActOnMessageExpression(IdentifierInfo *receivingClassName, 
+  virtual ExprResult ActOnKeywordMessage(IdentifierInfo *receivingClassName, 
     ObjcKeywordMessage *Keywords, unsigned NumKeywords) {
     return 0;
   }
   // This action handles keyword messages to instances.
-  virtual DeclTy *ActOnMessageExpression(ExprTy *receiver, 
+  virtual ExprResult ActOnKeywordMessage(ExprTy *receiver, 
     ObjcKeywordMessage *Keywords, unsigned NumKeywords) {
     return 0;
   }
+  // This actions handles keyword message to classes.
+  virtual ExprResult ActOnUnaryMessage(IdentifierInfo *receivingClassName, 
+                                    IdentifierInfo *selName) {
+    return 0;
+  }
+  // This action handles keyword messages to instances.
+  virtual ExprResult ActOnUnaryMessage(ExprTy *receiver,IdentifierInfo *sName) {
+    return 0;
+  }
   virtual DeclTy *ObjcClassDeclaration(Scope *S, SourceLocation AtClassLoc,
                                        IdentifierInfo **IdentList,
                                        unsigned NumElts) {