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/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp
index 224b826..356c7a7 100644
--- a/Parse/ParseObjc.cpp
+++ b/Parse/ParseObjc.cpp
@@ -1007,7 +1007,7 @@
///
Parser::ExprResult Parser::ParseObjCMessageExpression() {
assert(Tok.getKind() == tok::l_square && "'[' expected");
- SourceLocation Loc = ConsumeBracket(); // consume '['
+ SourceLocation LBracloc = ConsumeBracket(); // consume '['
IdentifierInfo *ReceiverName = 0;
ExprTy *ReceiverExpr = 0;
// Parse receiver
@@ -1073,20 +1073,22 @@
SkipUntil(tok::semi);
return 0;
}
- ConsumeBracket(); // consume ']'
+ SourceLocation RBracloc = ConsumeBracket(); // consume ']'
if (KeyInfo.size()) {
// We've just parsed a keyword message.
if (ReceiverName)
return Actions.ActOnKeywordMessage(ReceiverName,
- &KeyInfo[0], KeyInfo.size());
+ &KeyInfo[0], KeyInfo.size(),
+ LBracloc, RBracloc);
return Actions.ActOnKeywordMessage(ReceiverExpr,
- &KeyInfo[0], KeyInfo.size());
+ &KeyInfo[0], KeyInfo.size(),
+ LBracloc, RBracloc);
}
// We've just parsed a unary message (a message with no arguments).
if (ReceiverName)
- return Actions.ActOnUnaryMessage(ReceiverName, selIdent);
- return Actions.ActOnUnaryMessage(ReceiverExpr, selIdent);
+ return Actions.ActOnUnaryMessage(ReceiverName, selIdent, LBracloc,RBracloc);
+ return Actions.ActOnUnaryMessage(ReceiverExpr, selIdent, LBracloc,RBracloc);
}
Parser::ExprResult Parser::ParseObjCStringLiteral() {