Index: src/preparser.cc |
diff --git a/src/preparser.cc b/src/preparser.cc |
index 0621918387a11f667fa74b5fbbd8641ebdb58c5d..bec72ef10f32618570f5e02035b5c16205d3b41e 100644 |
--- a/src/preparser.cc |
+++ b/src/preparser.cc |
@@ -122,11 +122,6 @@ PreParserExpression PreParserTraits::ExpressionFromString( |
} |
-PreParserExpression PreParserTraits::ParseObjectLiteral(bool* ok) { |
- return pre_parser_->ParseObjectLiteral(ok); |
-} |
- |
- |
PreParserExpression PreParserTraits::ParseAssignmentExpression(bool accept_IN, |
bool* ok) { |
return pre_parser_->ParseAssignmentExpression(accept_IN, ok); |
@@ -138,6 +133,20 @@ PreParserExpression PreParserTraits::ParseV8Intrinsic(bool* ok) { |
} |
+PreParserExpression PreParserTraits::ParseFunctionLiteral( |
+ PreParserIdentifier name, |
+ Scanner::Location function_name_location, |
+ bool name_is_strict_reserved, |
+ bool is_generator, |
+ int function_token_position, |
+ FunctionLiteral::FunctionType type, |
+ bool* ok) { |
+ return pre_parser_->ParseFunctionLiteral( |
+ name, function_name_location, name_is_strict_reserved, is_generator, |
+ function_token_position, type, ok); |
+} |
+ |
+ |
PreParser::PreParseResult PreParser::PreParseLazyFunction( |
StrictMode strict_mode, bool is_generator, ParserRecorder* log) { |
log_ = log; |
@@ -1126,91 +1135,6 @@ PreParser::Expression PreParser::ParseMemberExpressionContinuation( |
} |
-PreParser::Expression PreParser::ParseObjectLiteral(bool* ok) { |
- // ObjectLiteral :: |
- // '{' (( |
- // ((IdentifierName | String | Number) ':' AssignmentExpression) | |
- // (('get' | 'set') (IdentifierName | String | Number) FunctionLiteral) |
- // ) ',')* '}' |
- // (Except that trailing comma is not required and not allowed.) |
- |
- ObjectLiteralChecker checker(this, strict_mode()); |
- |
- Expect(Token::LBRACE, CHECK_OK); |
- while (peek() != Token::RBRACE) { |
- Token::Value next = peek(); |
- switch (next) { |
- case Token::IDENTIFIER: |
- case Token::FUTURE_RESERVED_WORD: |
- case Token::FUTURE_STRICT_RESERVED_WORD: { |
- bool is_getter = false; |
- bool is_setter = false; |
- ParseIdentifierNameOrGetOrSet(&is_getter, &is_setter, CHECK_OK); |
- if ((is_getter || is_setter) && peek() != Token::COLON) { |
- Token::Value next = Next(); |
- if (next != Token::IDENTIFIER && |
- next != Token::FUTURE_RESERVED_WORD && |
- next != Token::FUTURE_STRICT_RESERVED_WORD && |
- next != Token::NUMBER && |
- next != Token::STRING && |
- !Token::IsKeyword(next)) { |
- ReportUnexpectedToken(next); |
- *ok = false; |
- return Expression::Default(); |
- } |
- // Validate the property |
- PropertyKind type = is_getter ? kGetterProperty : kSetterProperty; |
- checker.CheckProperty(next, type, CHECK_OK); |
- PreParserIdentifier name = GetSymbol(scanner()); |
- ParseFunctionLiteral(name, |
- scanner()->location(), |
- false, // reserved words are allowed here |
- false, // not a generator |
- RelocInfo::kNoPosition, |
- FunctionLiteral::ANONYMOUS_EXPRESSION, |
- CHECK_OK); |
- if (peek() != Token::RBRACE) { |
- Expect(Token::COMMA, CHECK_OK); |
- } |
- continue; // restart the while |
- } |
- break; |
- } |
- case Token::STRING: |
- Consume(next); |
- LogSymbol(); |
- break; |
- case Token::NUMBER: |
- Consume(next); |
- break; |
- default: |
- if (Token::IsKeyword(next)) { |
- Consume(next); |
- LogSymbol(); |
- } else { |
- Token::Value next = Next(); |
- ReportUnexpectedToken(next); |
- *ok = false; |
- return Expression::Default(); |
- } |
- } |
- |
- // Validate the property |
- checker.CheckProperty(next, kValueProperty, CHECK_OK); |
- |
- Expect(Token::COLON, CHECK_OK); |
- ParseAssignmentExpression(true, CHECK_OK); |
- |
- // TODO(1240767): Consider allowing trailing comma. |
- if (peek() != Token::RBRACE) Expect(Token::COMMA, CHECK_OK); |
- } |
- Expect(Token::RBRACE, CHECK_OK); |
- |
- function_state_->NextMaterializedLiteralIndex(); |
- return Expression::Default(); |
-} |
- |
- |
PreParser::Arguments PreParser::ParseArguments(bool* ok) { |
// Arguments :: |
// '(' (AssignmentExpression)*[','] ')' |