AST for @try statement.

llvm-svn: 43640
diff --git a/clang/Parse/ParseObjc.cpp b/clang/Parse/ParseObjc.cpp
index 5d691a6..bfc0a8c 100644
--- a/clang/Parse/ParseObjc.cpp
+++ b/clang/Parse/ParseObjc.cpp
@@ -1057,6 +1057,8 @@
   StmtResult CatchStmts;
   StmtResult FinallyStmt;
   StmtResult TryBody = ParseCompoundStatementBody();
+  if (TryBody.isInvalid)
+    TryBody = Actions.ActOnNullStmt(Tok.getLocation());
   while (Tok.is(tok::at)) {
     SourceLocation AtCatchFinallyLoc = ConsumeToken();
     if (Tok.getIdentifierInfo()->getObjCKeywordID() == tok::objc_catch) {
@@ -1103,9 +1105,12 @@
       break;
     }
   }
-  if (!catch_or_finally_seen)
+  if (!catch_or_finally_seen) {
     Diag(atLoc, diag::err_missing_catch_finally);
-  return true;
+    return true;
+  }
+  return Actions.ActOnObjcAtTryStmt(atLoc, TryBody.Val, CatchStmts.Val, 
+                                    FinallyStmt.Val);
 }
 
 ///   objc-method-def: objc-method-proto ';'[opt] '{' body '}'