}
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() {
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).
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;
+}
+
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) {