Progress on message expressions...

- Add ObjcMessageExpr AST node and associated constructors.
- Add SourceLocation's to ActOnKeywordMessage/ActOnUnaryMessage API.
- Instantiate message expressions...
- Replace alloca usage with SmallString.

Next step, installing a correct type, among other tweaks...



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42116 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/Sema.h b/Sema/Sema.h
index 79fc111..29a03d1 100644
--- a/Sema/Sema.h
+++ b/Sema/Sema.h
@@ -384,17 +384,22 @@
 		    tok::ObjCKeywordKind MethodImplKind);
                     
   // This actions handles keyword message to classes.
-  virtual ExprResult ActOnKeywordMessage(IdentifierInfo *receivingClassName, 
-    ObjcKeywordMessage *Keywords, unsigned NumKeywords);
+  virtual ExprResult ActOnKeywordMessage(
+    IdentifierInfo *receivingClassName, 
+    ObjcKeywordMessage *Keywords, unsigned NumKeywords,
+    SourceLocation lbrac, SourceLocation rbrac);
   // 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);
+    ObjcKeywordMessage *Keywords, unsigned NumKeywords,
+    SourceLocation lbrac, SourceLocation rbrac);
+  // This actions handles unary message to classes.
+  virtual ExprResult ActOnUnaryMessage(
+    IdentifierInfo *receivingClassName, IdentifierInfo *selName,
+    SourceLocation lbrac, SourceLocation rbrac);
+  // This action handles unary messages to instances.
+  virtual ExprResult ActOnUnaryMessage(
+    ExprTy *receiver, IdentifierInfo *sName,
+    SourceLocation lbrac, SourceLocation rbrac);
 private:
   // UsualUnaryConversions - promotes integers (C99 6.3.1.1p2) and converts
   // functions and arrays to their respective pointers (C99 6.3.2.1).