fix corner case in hoist_vars (#4518)

fixes #4517
This commit is contained in:
Alex Lam S.L
2021-01-07 07:05:48 +00:00
committed by GitHub
parent c3d358a5b8
commit cf1b0165af
2 changed files with 34 additions and 2 deletions

View File

@@ -7700,6 +7700,7 @@ merge(Compressor.prototype, {
def.references.push(name);
}
def.eliminated++;
def.single_use = false;
return a;
}, []);
if (assignments.length == 0) return null;
@@ -9702,7 +9703,8 @@ merge(Compressor.prototype, {
}
}));
} else {
value = fixed.optimize(compressor).transform(new TreeTransformer(function(node, descend) {
value = fixed.optimize(compressor);
if (value === fixed) value = value.transform(new TreeTransformer(function(node, descend) {
if (node instanceof AST_Scope) return node;
node = node.clone();
descend(node, this);

View File

@@ -172,8 +172,38 @@ issue_4489: {
A = 0;
var o = !0 || null;
for (var k in o);
console.log(k);
}
expect: {
for (var k in !(A = 0));
!(A = 0);
for (var k in true);
console.log(k);
}
expect_stdout: "undefined"
}
issue_4517: {
options = {
collapse_vars: true,
hoist_vars: true,
join_vars: true,
reduce_vars: true,
unused: true,
}
input: {
console.log(function() {
var a = 2;
A = a;
var b = typeof !1;
return A + b;
}());
}
expect: {
console.log(function() {
var a = 2;
A = a;
return A + typeof !1;
}());
}
expect_stdout: "2boolean"
}