fix corner case in collapse_vars (#3954)
This commit is contained in:
@@ -1832,13 +1832,13 @@ merge(Compressor.prototype, {
|
||||
return make_node(AST_SymbolRef, expr.name, expr.name);
|
||||
}
|
||||
} else if (expr instanceof AST_Assign) {
|
||||
var lhs = expr.left;
|
||||
if (expr.operator == "=" && lhs instanceof AST_SymbolRef) {
|
||||
var def = lhs.definition();
|
||||
if (def.references[0] === lhs) {
|
||||
var referenced = def.references.length - def.replaced;
|
||||
if (referenced > 1) mangleable_var(expr.right);
|
||||
}
|
||||
var def, lhs = expr.left;
|
||||
if (expr.operator == "="
|
||||
&& lhs instanceof AST_SymbolRef
|
||||
&& (def = lhs.definition()).references[0] === lhs
|
||||
&& !compressor.exposed(def)) {
|
||||
var referenced = def.references.length - def.replaced;
|
||||
if (referenced > 1) mangleable_var(expr.right);
|
||||
}
|
||||
return lhs;
|
||||
} else {
|
||||
|
||||
@@ -6888,6 +6888,30 @@ sequence_in_iife_2: {
|
||||
}
|
||||
expect: {
|
||||
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);
|
||||
}
|
||||
expect_stdout: "foo foo"
|
||||
|
||||
Reference in New Issue
Block a user