aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-04-24 22:16:51 +0100
committerGitHub <noreply@github.com>2021-04-25 05:16:51 +0800
commita1a212f6393f690180a606c0610a4ca9279522ad (patch)
treeec160564b9c3f44840b3d8f70f529eb10d3865cb
parenta2b1b96752c5f898539f8e28431461428c4c7731 (diff)
downloadtracifyjs-a1a212f6393f690180a606c0610a4ca9279522ad.tar.gz
tracifyjs-a1a212f6393f690180a606c0610a4ca9279522ad.zip
fix corner case in `collapse_vars` (#4869)
fixes #4868
-rw-r--r--lib/compress.js9
-rw-r--r--test/compress/collapse_vars.js20
2 files changed, 27 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 4c9026d1..6c475629 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -2563,8 +2563,13 @@ merge(Compressor.prototype, {
if (is_lhs_read_only(value, compressor)) return;
var referenced = def.references.length - def.replaced;
if (referenced < 2) return;
- candidate = candidate.clone();
- candidate[candidate instanceof AST_Assign ? "right" : "value"] = value;
+ var expr = candidate.clone();
+ expr[expr instanceof AST_Assign ? "right" : "value"] = value;
+ if (candidate.name_index >= 0) {
+ expr.name_index = candidate.name_index;
+ expr.arg_index = candidate.arg_index;
+ }
+ candidate = expr;
}
return value_def = def;
}
diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js
index 4051bb14..36cba2a5 100644
--- a/test/compress/collapse_vars.js
+++ b/test/compress/collapse_vars.js
@@ -9010,3 +9010,23 @@ issue_4865: {
}
expect_stdout: true
}
+
+issue_4868: {
+ options = {
+ collapse_vars: true,
+ unused: true,
+ }
+ input: {
+ var a;
+ (function(b) {
+ console.log(b[0]);
+ })(a = [ "PASS" ], a = [ "FAIL" ]);
+ }
+ expect: {
+ var a;
+ (function(b) {
+ console.log(b[0]);
+ })(a = [ "PASS" ], a = [ "FAIL" ]);
+ }
+ expect_stdout: "PASS"
+}