fix corner case in loops & unused (#4076)

fixes #4075
This commit is contained in:
Alex Lam S.L
2020-08-26 10:32:20 +01:00
committed by GitHub
parent c7a3e09407
commit 93d084a1d1
2 changed files with 25 additions and 1 deletions

View File

@@ -4677,7 +4677,9 @@ merge(Compressor.prototype, {
sym = sym.expression.tail_node(); sym = sym.expression.tail_node();
} }
var def = sym.definition(); var def = sym.definition();
if (!def || def.id in in_use_ids) return; if (!def) return;
if (def.scope !== self) return;
if (def.id in in_use_ids) return;
log(sym, "Dropping unused loop variable {name}"); log(sym, "Dropping unused loop variable {name}");
var value = node.object.drop_side_effect_free(compressor); var value = node.object.drop_side_effect_free(compressor);
if (!value) return in_list ? List.skip : make_node(AST_EmptyStatement, node); if (!value) return in_list ? List.skip : make_node(AST_EmptyStatement, node);

View File

@@ -963,3 +963,25 @@ issue_3634_2: {
} }
expect_stdout: "1" expect_stdout: "1"
} }
issue_4075: {
options = {
loops: true,
unused: true,
}
input: {
var a = "FAIL";
(function() {
for (a in { PASS: 0 });
})()
console.log(a);
}
expect: {
var a = "FAIL";
(function() {
for (a in { PASS: 0 });
})()
console.log(a);
}
expect_stdout: "PASS"
}