| Index: src/parsing/parser-base.h
|
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
|
| index c56b59e99c71cda3e1efa1ffc29241a160ca7ab2..581015f5c9b88196869e988a16165481d66d3139 100644
|
| --- a/src/parsing/parser-base.h
|
| +++ b/src/parsing/parser-base.h
|
| @@ -1847,7 +1847,7 @@ typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseObjectLiteral(
|
| Expect(Token::LBRACE, CHECK_OK);
|
|
|
| while (peek() != Token::RBRACE) {
|
| - if (fni_ != nullptr) fni_->Enter();
|
| + FuncNameInferrer::State fni_state(fni_);
|
|
|
| const bool in_class = false;
|
| const bool is_static = false;
|
| @@ -1878,10 +1878,7 @@ typename ParserBase<Traits>::ExpressionT ParserBase<Traits>::ParseObjectLiteral(
|
| Expect(Token::COMMA, CHECK_OK);
|
| }
|
|
|
| - if (fni_ != nullptr) {
|
| - fni_->Infer();
|
| - fni_->Leave();
|
| - }
|
| + if (fni_ != nullptr) fni_->Infer();
|
| }
|
| Expect(Token::RBRACE, CHECK_OK);
|
|
|
| @@ -1984,7 +1981,7 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN, int flags,
|
| return this->ParseYieldExpression(classifier, ok);
|
| }
|
|
|
| - if (fni_ != NULL) fni_->Enter();
|
| + FuncNameInferrer::State fni_state(fni_);
|
| ParserBase<Traits>::Checkpoint checkpoint(this);
|
| ExpressionClassifier arrow_formals_classifier(classifier->duplicate_finder());
|
| bool parenthesized_formals = peek() == Token::LPAREN;
|
| @@ -2028,6 +2025,9 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN, int flags,
|
| Scanner::Location(lhs_beg_pos, scanner()->location().end_pos),
|
| MessageTemplate::kInvalidDestructuringTarget);
|
| }
|
| +
|
| + if (fni_ != nullptr) fni_->Infer();
|
| +
|
| return expression;
|
| }
|
|
|
| @@ -2049,7 +2049,6 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN, int flags,
|
| // allow_harmony_destructuring_bind() && maybe_pattern && !is_rhs;
|
|
|
| if (!Token::IsAssignmentOp(peek())) {
|
| - if (fni_ != NULL) fni_->Leave();
|
| // Parsed conditional expression only (no assignment).
|
| if (is_pattern_element && !this->IsValidReferenceExpression(expression) &&
|
| !maybe_pattern) {
|
| @@ -2125,7 +2124,6 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN, int flags,
|
| } else {
|
| fni_->RemoveLastFunction();
|
| }
|
| - fni_->Leave();
|
| }
|
|
|
| ExpressionT result = factory()->NewAssignment(op, expression, right, pos);
|
| @@ -2604,7 +2602,7 @@ ParserBase<Traits>::ParseStrongInitializationExpression(
|
| // 'this' '.' IdentifierName '=' AssignmentExpression
|
| // 'this' '[' Expression ']' '=' AssignmentExpression
|
|
|
| - if (fni_ != NULL) fni_->Enter();
|
| + FuncNameInferrer::State fni_state(fni_);
|
|
|
| Consume(Token::THIS);
|
| int pos = position();
|
| @@ -2663,7 +2661,6 @@ ParserBase<Traits>::ParseStrongInitializationExpression(
|
| } else {
|
| fni_->RemoveLastFunction();
|
| }
|
| - fni_->Leave();
|
| }
|
|
|
| if (function_state_->return_location().IsValid()) {
|
|
|