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);
|
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 {
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user