| Index: src/preparser.cc
|
| diff --git a/src/preparser.cc b/src/preparser.cc
|
| index 3617bb23ca9964b44f2a5e00c8069cae60e9af15..1f663161b1c18972f44a4d7b95fcb47cb8bf5014 100644
|
| --- a/src/preparser.cc
|
| +++ b/src/preparser.cc
|
| @@ -156,14 +156,7 @@ PreParserExpression PreParserTraits::ParseClassLiteral(
|
| // it is used) are generally omitted.
|
|
|
|
|
| -#define CHECK_OK ok); \
|
| - if (!*ok) return kUnknownSourceElements; \
|
| - ((void)0
|
| -#define DUMMY ) // to make indentation work
|
| -#undef DUMMY
|
| -
|
| -
|
| -PreParser::Statement PreParser::ParseSourceElement(bool* ok) {
|
| +PreParser::Statement PreParser::ParseStatementListItem(bool* ok) {
|
| // ECMA 262 6th Edition
|
| // StatementListItem[Yield, Return] :
|
| // Statement[?Yield, ?Return]
|
| @@ -200,8 +193,7 @@ PreParser::Statement PreParser::ParseSourceElement(bool* ok) {
|
| }
|
|
|
|
|
| -PreParser::SourceElements PreParser::ParseSourceElements(int end_token,
|
| - bool* ok) {
|
| +void PreParser::ParseStatementList(int end_token, bool* ok) {
|
| // SourceElements ::
|
| // (Statement)* <end_token>
|
|
|
| @@ -210,7 +202,8 @@ PreParser::SourceElements PreParser::ParseSourceElements(int end_token,
|
| if (directive_prologue && peek() != Token::STRING) {
|
| directive_prologue = false;
|
| }
|
| - Statement statement = ParseSourceElement(CHECK_OK);
|
| + Statement statement = ParseStatementListItem(ok);
|
| + if (!*ok) return;
|
| if (directive_prologue) {
|
| if (statement.IsUseStrictLiteral()) {
|
| scope_->SetLanguageMode(
|
| @@ -223,11 +216,9 @@ PreParser::SourceElements PreParser::ParseSourceElements(int end_token,
|
| }
|
| }
|
| }
|
| - return kUnknownSourceElements;
|
| }
|
|
|
|
|
| -#undef CHECK_OK
|
| #define CHECK_OK ok); \
|
| if (!*ok) return Statement::Default(); \
|
| ((void)0
|
| @@ -387,7 +378,7 @@ PreParser::Statement PreParser::ParseBlock(bool* ok) {
|
| Expect(Token::LBRACE, CHECK_OK);
|
| while (peek() != Token::RBRACE) {
|
| if (allow_harmony_scoping() && is_strict(language_mode())) {
|
| - ParseSourceElement(CHECK_OK);
|
| + ParseStatementListItem(CHECK_OK);
|
| } else {
|
| ParseStatement(CHECK_OK);
|
| }
|
| @@ -932,7 +923,7 @@ PreParser::Expression PreParser::ParseFunctionLiteral(
|
| if (is_lazily_parsed) {
|
| ParseLazyFunctionLiteralBody(CHECK_OK);
|
| } else {
|
| - ParseSourceElements(Token::RBRACE, ok);
|
| + ParseStatementList(Token::RBRACE, CHECK_OK);
|
| }
|
| Expect(Token::RBRACE, CHECK_OK);
|
|
|
| @@ -956,7 +947,7 @@ PreParser::Expression PreParser::ParseFunctionLiteral(
|
|
|
| void PreParser::ParseLazyFunctionLiteralBody(bool* ok) {
|
| int body_start = position();
|
| - ParseSourceElements(Token::RBRACE, ok);
|
| + ParseStatementList(Token::RBRACE, ok);
|
| if (!*ok) return;
|
|
|
| // Position right after terminal '}'.
|
|
|