| Index: src/parsing/preparser.cc
|
| diff --git a/src/parsing/preparser.cc b/src/parsing/preparser.cc
|
| index 6acc48eec32662bd4c0360645ac9a25a199fcaea..b04090062124c55b297cd88b7cad6da314bd642b 100644
|
| --- a/src/parsing/preparser.cc
|
| +++ b/src/parsing/preparser.cc
|
| @@ -91,6 +91,9 @@ PreParser::PreParseResult PreParser::PreParseFunction(
|
| use_counts_ = use_counts;
|
| DCHECK(!track_unresolved_variables_);
|
| track_unresolved_variables_ = is_inner_function;
|
| +#ifdef DEBUG
|
| + function_scope->set_is_being_lazily_parsed(true);
|
| +#endif
|
|
|
| // In the preparser, we use the function literal ids to count how many
|
| // FunctionLiterals were encountered. The PreParser doesn't actually persist
|
| @@ -133,6 +136,7 @@ PreParser::PreParseResult PreParser::PreParseFunction(
|
| &formals, has_duplicate_parameters, may_abort, ok);
|
| use_counts_ = nullptr;
|
| track_unresolved_variables_ = false;
|
| +
|
| if (result == kLazyParsingAborted) {
|
| return kPreParseAbort;
|
| } else if (stack_overflow()) {
|
| @@ -296,7 +300,10 @@ void PreParser::DeclareAndInitializeVariables(
|
| var + initializer -> RemoveUnresolved followed by NewUnresolved
|
| let / const + initializer -> RemoveUnresolved
|
| */
|
| -
|
| + Scope* scope = declaration_descriptor->hoist_scope;
|
| + if (scope == nullptr) {
|
| + scope = this->scope();
|
| + }
|
| if (declaration->initializer.IsEmpty() ||
|
| (declaration_descriptor->mode == VariableMode::LET ||
|
| declaration_descriptor->mode == VariableMode::CONST)) {
|
| @@ -304,6 +311,9 @@ void PreParser::DeclareAndInitializeVariables(
|
| declaration_descriptor->scope->RemoveUnresolved(identifier);
|
| }
|
| }
|
| + for (auto identifier : *(declaration->pattern.identifiers_)) {
|
| + scope->DeclareVariableName(identifier, declaration_descriptor->mode);
|
| + }
|
| }
|
| }
|
|
|
|
|