Refactored parsing of main function body for reuse by objective-c methods.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43898 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Parse/ParseStmt.cpp b/Parse/ParseStmt.cpp
index 5e05f9a..6836f10 100644
--- a/Parse/ParseStmt.cpp
+++ b/Parse/ParseStmt.cpp
@@ -1030,3 +1030,21 @@
     ConsumeToken();
   }
 }
+
+Parser::DeclTy *Parser::ParseFunctionStatementBody(DeclTy *Decl, 
+                                           SourceLocation L, SourceLocation R) {
+  // Do not enter a scope for the brace, as the arguments are in the same scope
+  // (the function body) as the body itself.  Instead, just read the statement
+  // list and put it into a CompoundStmt for safe keeping.
+  StmtResult FnBody = ParseCompoundStatementBody();
+  
+  // If the function body could not be parsed, make a bogus compoundstmt.
+  if (FnBody.isInvalid)
+    FnBody = Actions.ActOnCompoundStmt(L, R, 0, 0, false);
+  
+  // Leave the function body scope.
+  ExitScope();
+  
+  // TODO: Pass argument information.
+  return Actions.ActOnFunctionDefBody(Decl, FnBody.Val);
+}
\ No newline at end of file