| Index: src/parsing/parser.cc
|
| diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
|
| index eae5a5781ce76fe043087245870f36da14dbcae5..b6a2b2b754ce6ae7fcb97a98ef464819481485e7 100644
|
| --- a/src/parsing/parser.cc
|
| +++ b/src/parsing/parser.cc
|
| @@ -232,7 +232,7 @@ FunctionLiteral* Parser::DefaultConstructor(const AstRawString* name,
|
|
|
| {
|
| FunctionState function_state(&function_state_, &scope_state_,
|
| - function_scope, kind);
|
| + function_scope);
|
|
|
| body = new (zone()) ZoneList<Statement*>(call_super ? 2 : 1, zone());
|
| if (call_super) {
|
| @@ -786,8 +786,7 @@ FunctionLiteral* Parser::DoParseProgram(ParseInfo* info) {
|
|
|
| // Enter 'scope' with the given parsing mode.
|
| ParsingModeScope parsing_mode_scope(this, parsing_mode);
|
| - FunctionState function_state(&function_state_, &scope_state_, scope,
|
| - kNormalFunction);
|
| + FunctionState function_state(&function_state_, &scope_state_, scope);
|
|
|
| ZoneList<Statement*>* body = new(zone()) ZoneList<Statement*>(16, zone());
|
| bool ok = true;
|
| @@ -936,8 +935,7 @@ FunctionLiteral* Parser::DoParseLazy(ParseInfo* info,
|
| DeclarationScope* outer_function = outer->GetClosureScope();
|
| DCHECK(outer);
|
| FunctionState function_state(&function_state_, &scope_state_,
|
| - outer_function,
|
| - outer_function->function_kind());
|
| + outer_function);
|
| BlockState block_state(&scope_state_, outer);
|
| DCHECK(is_sloppy(outer->language_mode()) ||
|
| is_strict(info->language_mode()));
|
| @@ -959,7 +957,8 @@ FunctionLiteral* Parser::DoParseLazy(ParseInfo* info,
|
| }
|
|
|
| // TODO(adamk): We should construct this scope from the ScopeInfo.
|
| - DeclarationScope* scope = NewFunctionScope(FunctionKind::kArrowFunction);
|
| + FunctionKind arrow_kind = is_async ? kAsyncArrowFunction : kArrowFunction;
|
| + DeclarationScope* scope = NewFunctionScope(arrow_kind);
|
|
|
| // These two bits only need to be explicitly set because we're
|
| // not passing the ScopeInfo to the Scope constructor.
|
| @@ -994,8 +993,7 @@ FunctionLiteral* Parser::DoParseLazy(ParseInfo* info,
|
| checkpoint.Restore(&formals.materialized_literals_count);
|
| // Pass `accept_IN=true` to ParseArrowFunctionLiteral --- This should
|
| // not be observable, or else the preparser would have failed.
|
| - Expression* expression =
|
| - ParseArrowFunctionLiteral(true, formals, is_async, &ok);
|
| + Expression* expression = ParseArrowFunctionLiteral(true, formals, &ok);
|
| if (ok) {
|
| // Scanning must end at the same position that was recorded
|
| // previously. If not, parsing has been interrupted due to a stack
|
| @@ -2783,7 +2781,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
| DCHECK(main_scope->zone() != scope->zone());
|
| }
|
|
|
| - FunctionState function_state(&function_state_, &scope_state_, scope, kind);
|
| + FunctionState function_state(&function_state_, &scope_state_, scope);
|
| #ifdef DEBUG
|
| scope->SetScopeName(function_name);
|
| #endif
|
| @@ -3552,7 +3550,7 @@ FunctionLiteral* Parser::SynthesizeClassFieldInitializer(int count) {
|
| initializer_scope->set_start_position(scanner()->location().end_pos);
|
| initializer_scope->set_end_position(scanner()->location().end_pos);
|
| FunctionState initializer_state(&function_state_, &scope_state_,
|
| - initializer_scope, kind);
|
| + initializer_scope);
|
| ZoneList<Statement*>* body = new (zone()) ZoneList<Statement*>(count, zone());
|
| for (int i = 0; i < count; ++i) {
|
| const AstRawString* name =
|
|
|