Fix a parser bug with message expressions - need to call ParsePostfixExpressionSuffix(). 

Now were correctly allow the following...

    i = [str rangeOfString:@"]"].length;



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43012 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Parse/ParseExpr.cpp b/Parse/ParseExpr.cpp
index c69d4d2..2bc1d62 100644
--- a/Parse/ParseExpr.cpp
+++ b/Parse/ParseExpr.cpp
@@ -178,7 +178,7 @@
 /// for example, @encode-expression.
 ///
 Parser::ExprResult Parser::ParseExpressionWithLeadingAt(SourceLocation AtLoc) {
-  ExprResult LHS = ParseObjCExpression(AtLoc);
+  ExprResult LHS = ParseObjCAtExpression(AtLoc);
   if (LHS.isInvalid) return LHS;
  
   return ParseRHSOfBinaryExpression(LHS, prec::Comma);
@@ -601,10 +601,11 @@
     return ParseCXXCasts();
   case tok::at: {
     SourceLocation AtLoc = ConsumeToken();
-    return ParseObjCExpression(AtLoc);
+    return ParseObjCAtExpression(AtLoc);
   }
   case tok::l_square:
-    return ParseObjCMessageExpression();
+    // These can be followed by postfix-expr pieces.
+    return ParsePostfixExpressionSuffix(ParseObjCMessageExpression());
   default:
     Diag(Tok, diag::err_expected_expression);
     return ExprResult(true);