| Index: src/parsing/preparser.cc
|
| diff --git a/src/parsing/preparser.cc b/src/parsing/preparser.cc
|
| index 0377a1b9d35e70ff9cb131ad061e01f7f257888f..43877b030c764c09332f6fad89e3f1b4d806c609 100644
|
| --- a/src/parsing/preparser.cc
|
| +++ b/src/parsing/preparser.cc
|
| @@ -310,8 +310,14 @@ void PreParser::DeclareAndInitializeVariables(
|
| DCHECK(track_unresolved_variables_);
|
| for (auto variable : *(declaration->pattern.variables_)) {
|
| declaration_descriptor->scope->RemoveUnresolved(variable);
|
| - scope()->DeclareVariableName(variable->raw_name(),
|
| - declaration_descriptor->mode);
|
| + Variable* var = scope()->DeclareVariableName(
|
| + variable->raw_name(), declaration_descriptor->mode);
|
| + if (FLAG_preparser_scope_analysis) {
|
| + MarkLoopVariableAsAssigned(declaration_descriptor->scope, var);
|
| + // This is only necessary if there is an initializer, but we don't have
|
| + // that information here. Consequently, the preparser sometimes says
|
| + // maybe-assigned where the parser (correctly) says never-assigned.
|
| + }
|
| if (names) {
|
| names->Add(variable->raw_name(), zone());
|
| }
|
|
|