fix corner case in reduce_vars (#4585)

fixes #4584
This commit is contained in:
Alex Lam S.L
2021-01-23 19:37:52 +00:00
committed by GitHub
parent f87e7be12c
commit acc443b2cf
3 changed files with 45 additions and 9 deletions

View File

@@ -786,7 +786,10 @@ merge(Compressor.prototype, {
}
var d = sym.definition();
d.assignments++;
if (fixed && !is_modified(compressor, tw, node, node.right, 0) && safe_to_assign(tw, d)) {
if (fixed
&& !is_modified(compressor, tw, node, node.right, 0)
&& !sym.in_arg
&& safe_to_assign(tw, d)) {
push_ref(d, sym);
mark(tw, d);
if (d.single_use && left instanceof AST_Destructured) d.single_use = false;
@@ -809,7 +812,7 @@ merge(Compressor.prototype, {
}
var safe = safe_to_read(tw, d);
node.right.walk(tw);
if (safe && safe_to_assign(tw, d)) {
if (safe && !left.in_arg && safe_to_assign(tw, d)) {
push_ref(d, left);
mark(tw, d);
if (d.single_use) d.single_use = false;
@@ -1117,7 +1120,7 @@ merge(Compressor.prototype, {
var d = exp.definition();
d.assignments++;
var fixed = d.fixed;
if (safe_to_read(tw, d) && safe_to_assign(tw, d)) {
if (safe_to_read(tw, d) && !exp.in_arg && safe_to_assign(tw, d)) {
push_ref(d, exp);
mark(tw, d);
if (d.single_use) d.single_use = false;