diff options
author | Chris Lattner <sabre@nondot.org> | 2008-09-19 17:44:00 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-09-19 17:44:00 +0000 |
commit | 69d349a8743f156b965141cda80520bddda84601 (patch) | |
tree | c639083dbeb89a84d24ce75b839efd4e7d935427 | |
parent | 2675875099ef178aa047fab8d51370555fc744f5 (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.cpp | 2 | ||||
-rw-r--r-- | test/Parser/objc-messaging-1.m | 5 |
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]; + } |