fix corner case in `collapse_vars` (#4391)
authorAlex Lam S.L <alexlamsl@gmail.com>
Thu, 17 Dec 2020 19:10:16 +0000 (19:10 +0000)
committerGitHub <noreply@github.com>
Thu, 17 Dec 2020 19:10:16 +0000 (03:10 +0800)
fixes #4390

lib/compress.js
test/compress/arrows.js

index 2c50cb3..8fe0ad6 100644 (file)
@@ -1776,7 +1776,9 @@ merge(Compressor.prototype, {
                     can_replace = false;
                     var after = stop_after;
                     var if_hit = stop_if_hit;
-                    for (var i = 0; !abort && i < fn.body.length; i++) {
+                    if (fn instanceof AST_Arrow && fn.value) {
+                        fn.value.transform(scanner);
+                    } else for (var i = 0; !abort && i < fn.body.length; i++) {
                         var stat = fn.body[i];
                         if (stat instanceof AST_Return) {
                             if (stat.value) stat.value.transform(scanner);
index eded913..34af350 100644 (file)
@@ -351,3 +351,32 @@ issue_4388: {
     expect_stdout: "undefined"
     node_version: ">=4"
 }
+
+issue_4390: {
+    options = {
+        collapse_vars: true,
+    }
+    input: {
+        function log() {
+            console.log.apply(console, arguments);
+        }
+        var a = 42, b = "FAIL";
+        b = "PASS";
+        (c => log(b, c))(a);
+        log(b);
+    }
+    expect: {
+        function log() {
+            console.log.apply(console, arguments);
+        }
+        var a = 42, b = "FAIL";
+        b = "PASS";
+        (c => log(b, c))(a);
+        log(b);
+    }
+    expect_stdout: [
+        "PASS 42",
+        "PASS",
+    ]
+    node_version: ">=4"
+}