fix corner case in `join_vars` (#5176)
authorAlex Lam S.L <alexlamsl@gmail.com>
Mon, 15 Nov 2021 13:35:54 +0000 (13:35 +0000)
committerGitHub <noreply@github.com>
Mon, 15 Nov 2021 13:35:54 +0000 (21:35 +0800)
fixes #5175

lib/compress.js
test/compress/join_vars.js

index 2f5233b..a4232ed 100644 (file)
@@ -3500,7 +3500,7 @@ merge(Compressor.prototype, {
             var exprs = extract_exprs(body);
             if (!exprs) return;
             var trimmed = false;
-            for (var i = exprs.length; --i >= 0;) {
+            for (var i = exprs.length - (keep || 0); --i >= 0;) {
                 var expr = exprs[i];
                 if (!can_trim(expr)) continue;
                 var tail;
index 94612c4..e2c54be 100644 (file)
@@ -1293,3 +1293,26 @@ assign_sequence_var: {
         "1 2 3",
     ]
 }
+
+issue_5175: {
+    options = {
+        join_vars: true,
+    }
+    input: {
+        function log(f) {
+            console.log(f(), A.p);
+        }
+        log(function() {
+            return (A = {}).p = "PASS";
+        });
+    }
+    expect: {
+        function log(f) {
+            console.log(f(), A.p);
+        }
+        log(function() {
+            return (A = {}).p = "PASS";
+        });
+    }
+    expect_stdout: "PASS PASS"
+}