| Index: src/preparser.h
|
| diff --git a/src/preparser.h b/src/preparser.h
|
| index 61cb883f8a664f8695ce78de9477b6bae6995f89..65951f3cdb19f7f2c86e5a6cffed1bcf3f4872c0 100644
|
| --- a/src/preparser.h
|
| +++ b/src/preparser.h
|
| @@ -713,7 +713,7 @@ class ParserBase : public Traits {
|
| // left-hand side of assignments). Although ruled out by ECMA as early errors,
|
| // we allow calls for web compatibility and rewrite them to a runtime throw.
|
| ExpressionT CheckAndRewriteReferenceExpression(
|
| - ExpressionT expression, Scanner::Location location,
|
| + ExpressionT expression, int beg_pos, int end_pos,
|
| MessageTemplate::Template message, bool* ok);
|
|
|
| // Used to validate property names in object literals and class literals
|
| @@ -2821,7 +2821,7 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN,
|
| // YieldExpression
|
| // LeftHandSideExpression AssignmentOperator AssignmentExpression
|
|
|
| - Scanner::Location lhs_location = scanner()->peek_location();
|
| + int lhs_beg_pos = peek_position();
|
|
|
| if (peek() == Token::YIELD && is_generator()) {
|
| return this->ParseYieldExpression(classifier, ok);
|
| @@ -2841,13 +2841,13 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN,
|
| BindingPatternUnexpectedToken(classifier);
|
| ValidateArrowFormalParameters(&arrow_formals_classifier, expression,
|
| parenthesized_formals, CHECK_OK);
|
| - Scanner::Location loc(lhs_location.beg_pos, scanner()->location().end_pos);
|
| + Scanner::Location loc(lhs_beg_pos, scanner()->location().end_pos);
|
| Scope* scope =
|
| this->NewScope(scope_, ARROW_SCOPE, FunctionKind::kArrowFunction);
|
| FormalParametersT parameters(scope);
|
| checkpoint.Restore(¶meters.materialized_literals_count);
|
|
|
| - scope->set_start_position(lhs_location.beg_pos);
|
| + scope->set_start_position(lhs_beg_pos);
|
| Scanner::Location duplicate_loc = Scanner::Location::invalid();
|
| this->ParseArrowFunctionFormalParameterList(¶meters, expression, loc,
|
| &duplicate_loc, CHECK_OK);
|
| @@ -2877,8 +2877,8 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN,
|
| }
|
|
|
| expression = this->CheckAndRewriteReferenceExpression(
|
| - expression, lhs_location, MessageTemplate::kInvalidLhsInAssignment,
|
| - CHECK_OK);
|
| + expression, lhs_beg_pos, scanner()->location().end_pos,
|
| + MessageTemplate::kInvalidLhsInAssignment, CHECK_OK);
|
| expression = this->MarkExpressionAsAssigned(expression);
|
|
|
| Token::Value op = Next(); // Get assignment operator.
|
| @@ -3094,11 +3094,11 @@ ParserBase<Traits>::ParseUnaryExpression(ExpressionClassifier* classifier,
|
| } else if (Token::IsCountOp(op)) {
|
| BindingPatternUnexpectedToken(classifier);
|
| op = Next();
|
| - Scanner::Location lhs_location = scanner()->peek_location();
|
| + int beg_pos = peek_position();
|
| ExpressionT expression = this->ParseUnaryExpression(classifier, CHECK_OK);
|
| expression = this->CheckAndRewriteReferenceExpression(
|
| - expression, lhs_location, MessageTemplate::kInvalidLhsInPrefixOp,
|
| - CHECK_OK);
|
| + expression, beg_pos, scanner()->location().end_pos,
|
| + MessageTemplate::kInvalidLhsInPrefixOp, CHECK_OK);
|
| this->MarkExpressionAsAssigned(expression);
|
|
|
| return factory()->NewCountOperation(op,
|
| @@ -3119,7 +3119,7 @@ ParserBase<Traits>::ParsePostfixExpression(ExpressionClassifier* classifier,
|
| // PostfixExpression ::
|
| // LeftHandSideExpression ('++' | '--')?
|
|
|
| - Scanner::Location lhs_location = scanner()->peek_location();
|
| + int lhs_beg_pos = peek_position();
|
| ExpressionT expression =
|
| this->ParseLeftHandSideExpression(classifier, CHECK_OK);
|
| if (!scanner()->HasAnyLineTerminatorBeforeNext() &&
|
| @@ -3127,8 +3127,8 @@ ParserBase<Traits>::ParsePostfixExpression(ExpressionClassifier* classifier,
|
| BindingPatternUnexpectedToken(classifier);
|
|
|
| expression = this->CheckAndRewriteReferenceExpression(
|
| - expression, lhs_location, MessageTemplate::kInvalidLhsInPostfixOp,
|
| - CHECK_OK);
|
| + expression, lhs_beg_pos, scanner()->location().end_pos,
|
| + MessageTemplate::kInvalidLhsInPostfixOp, CHECK_OK);
|
| expression = this->MarkExpressionAsAssigned(expression);
|
|
|
| Token::Value next = Next();
|
| @@ -3936,8 +3936,9 @@ ParserBase<Traits>::ParseTemplateLiteral(ExpressionT tag, int start,
|
| template <typename Traits>
|
| typename ParserBase<Traits>::ExpressionT
|
| ParserBase<Traits>::CheckAndRewriteReferenceExpression(
|
| - ExpressionT expression, Scanner::Location location,
|
| + ExpressionT expression, int beg_pos, int end_pos,
|
| MessageTemplate::Template message, bool* ok) {
|
| + Scanner::Location location(beg_pos, end_pos);
|
| if (this->IsIdentifier(expression)) {
|
| if (is_strict(language_mode()) &&
|
| this->IsEvalOrArguments(this->AsIdentifier(expression))) {
|
|
|