forked from OSchip/llvm-project
Refactored parsing of main function body for reuse by objective-c methods.
llvm-svn: 43898
This commit is contained in:
parent
19ca5c7021
commit
8e632940fc
|
@ -1030,3 +1030,21 @@ void Parser::ParseAsmOperandsOpt() {
|
|||
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);
|
||||
}
|
|
@ -462,21 +462,7 @@ Parser::DeclTy *Parser::ParseFunctionDefinition(Declarator &D) {
|
|||
// specified Declarator for the function.
|
||||
DeclTy *Res = Actions.ActOnStartOfFunctionDef(CurScope, D);
|
||||
|
||||
|
||||
// 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(BraceLoc, BraceLoc, 0, 0, false);
|
||||
|
||||
// Leave the function body scope.
|
||||
ExitScope();
|
||||
|
||||
// TODO: Pass argument information.
|
||||
return Actions.ActOnFunctionDefBody(Res, FnBody.Val);
|
||||
return ParseFunctionStatementBody(Res, BraceLoc, BraceLoc);
|
||||
}
|
||||
|
||||
/// ParseKNRParamDeclarations - Parse 'declaration-list[opt]' which provides
|
||||
|
|
|
@ -397,6 +397,8 @@ private:
|
|||
DeclTy *ParseDeclaration(unsigned Context);
|
||||
DeclTy *ParseSimpleDeclaration(unsigned Context);
|
||||
DeclTy *ParseInitDeclaratorListAfterFirstDeclarator(Declarator &D);
|
||||
DeclTy *ParseFunctionStatementBody(DeclTy *Decl,
|
||||
SourceLocation L, SourceLocation R);
|
||||
void ParseDeclarationSpecifiers(DeclSpec &DS);
|
||||
void ParseSpecifierQualifierList(DeclSpec &DS);
|
||||
|
||||
|
|
Loading…
Reference in New Issue