aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-09-19 17:44:00 +0000
committerChris Lattner <sabre@nondot.org>2008-09-19 17:44:00 +0000
commit69d349a8743f156b965141cda80520bddda84601 (patch)
treec639083dbeb89a84d24ce75b839efd4e7d935427
parent2675875099ef178aa047fab8d51370555fc744f5 (diff)
Fix rdar://6222856: the receiver of a message expr is an
arbitrary expr, not just a assign expr. The grammar comment was right, the code was just wrong. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56353 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Parse/ParseObjc.cpp2
-rw-r--r--test/Parser/objc-messaging-1.m5
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp
index a2f4eb2508..e957db4ed9 100644
--- a/lib/Parse/ParseObjc.cpp
+++ b/lib/Parse/ParseObjc.cpp
@@ -1435,7 +1435,7 @@ Parser::ExprResult Parser::ParseObjCMessageExpression() {
return ParseObjCMessageExpressionBody(LBracLoc, ReceiverName, 0);
}
- ExprResult Res = ParseAssignmentExpression();
+ ExprResult Res = ParseExpression();
if (Res.isInvalid) {
SkipUntil(tok::r_square);
return Res;
diff --git a/test/Parser/objc-messaging-1.m b/test/Parser/objc-messaging-1.m
index 3f6168f6b2..7340fac5f7 100644
--- a/test/Parser/objc-messaging-1.m
+++ b/test/Parser/objc-messaging-1.m
@@ -3,6 +3,7 @@ int main ()
{
int i,j;
struct S *p;
+ id a, b, c;
[p ii];
[p if: 1 :2];
[p inout: 1 :2 another:(2,3,4)];
@@ -11,4 +12,8 @@ int main ()
[p inout: 1 :2 another:(i+10), (i,j-1,5),6,8];
[p long: 1 :2 another:(i+10), (i,j-1,5),6,8];
[p : "Hello\n" :2 another:(i+10), (i,j-1,5),6,8];
+
+ // Comma expression as receiver (rdar://6222856)
+ [a, b, c foo];
+
}