fix corner case in collapse_vars (#3954)

This commit is contained in:
Alex Lam S.L
2020-06-05 07:28:08 +01:00
committed by GitHub
parent 04fd3d90f8
commit fbc9d8009b
2 changed files with 31 additions and 7 deletions

View File

@@ -1832,13 +1832,13 @@ merge(Compressor.prototype, {
return make_node(AST_SymbolRef, expr.name, expr.name); return make_node(AST_SymbolRef, expr.name, expr.name);
} }
} else if (expr instanceof AST_Assign) { } else if (expr instanceof AST_Assign) {
var lhs = expr.left; var def, lhs = expr.left;
if (expr.operator == "=" && lhs instanceof AST_SymbolRef) { if (expr.operator == "="
var def = lhs.definition(); && lhs instanceof AST_SymbolRef
if (def.references[0] === lhs) { && (def = lhs.definition()).references[0] === lhs
var referenced = def.references.length - def.replaced; && !compressor.exposed(def)) {
if (referenced > 1) mangleable_var(expr.right); var referenced = def.references.length - def.replaced;
} if (referenced > 1) mangleable_var(expr.right);
} }
return lhs; return lhs;
} else { } else {

View File

@@ -6888,6 +6888,30 @@ sequence_in_iife_2: {
} }
expect: { expect: {
var a = "foo", b = 42; var a = "foo", b = 42;
b = a;
console.log(a, b);
}
expect_stdout: "foo foo"
}
sequence_in_iife_3: {
options = {
collapse_vars: true,
inline: true,
passes: 2,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var a = "foo", b = 42;
(function() {
var c = (b = a, b);
})();
console.log(a, b);
}
expect: {
var a = "foo";
console.log(a, a); console.log(a, a);
} }
expect_stdout: "foo foo" expect_stdout: "foo foo"