fix corner case in unused (#4026)

fixes #4025
This commit is contained in:
Alex Lam S.L
2020-07-26 02:27:54 +01:00
committed by GitHub
parent 1bc0df1569
commit 6d3dcaa59e
2 changed files with 46 additions and 6 deletions

View File

@@ -4457,13 +4457,18 @@ merge(Compressor.prototype, {
var sym = def.name.definition();
if (!drop_vars || sym.id in in_use_ids) {
if (def.value && indexOf_assign(sym, def) < 0) {
var write_only = def.value.write_only;
var value = def.value.drop_side_effect_free(compressor);
if (def.value !== value) def.value = value && make_sequence(def.value, [
value,
make_node(AST_Number, def.value, {
value: 0
}),
]);
if (def.value !== value) {
def.value = value && make_sequence(def.value, [
value,
make_node(AST_Number, def.value, {
value: 0
}),
]);
} else if (def.value.write_only !== write_only) {
def.value.write_only = write_only;
}
}
var old_def, var_defs = var_defs_by_id.get(sym.id);
if (!def.value) {

View File

@@ -2813,3 +2813,38 @@ issue_4017: {
}
expect_stdout: "undefined"
}
issue_4025: {
options = {
collapse_vars: true,
evaluate: true,
passes: 2,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var a = 0, b = 0, c = 0, d = a++;
try {
var e = console.log(c), f = b;
} finally {
var d = b = 1, d = c + 1;
c = 0;
}
console.log(a, b, d);
}
expect: {
var d, c = 0;
try {
console.log(c);
} finally {
d = c + 1;
c = 0;
}
console.log(1, 1, d);
}
expect_stdout: [
"0",
"1 1 1",
]
}