fix corner case in `join_vars` (#3857)
authorAlex Lam S.L <alexlamsl@gmail.com>
Fri, 8 May 2020 03:49:17 +0000 (04:49 +0100)
committerGitHub <noreply@github.com>
Fri, 8 May 2020 03:49:17 +0000 (11:49 +0800)
fixes #3856

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

index ffdd5cc..4dae2a9 100644 (file)
@@ -2579,6 +2579,8 @@ merge(Compressor.prototype, {
                     }
                     if (node instanceof AST_Scope) return node;
                     if (!(node instanceof AST_Statement)) return node;
+                }, function(node) {
+                    if (node instanceof AST_For && is_empty(node.init)) node.init = null;
                 }));
             }
         }
index a4e0936..3e4334c 100644 (file)
@@ -989,3 +989,37 @@ conditional_assignments_3: {
     }
     expect_stdout: "PASS"
 }
+
+issue_3856: {
+    options = {
+        booleans: true,
+        conditionals: true,
+        if_return: true,
+        join_vars: true,
+        sequences: true,
+    }
+    input: {
+        console.log(function() {
+            (function() {
+                var a;
+                if (!a) {
+                    a = 0;
+                    for (var b; !console;);
+                    return 0;
+                }
+                if (a) return 1;
+            })();
+        }());
+    }
+    expect: {
+        console.log(function() {
+            (function() {
+                var a, b;
+                if (a) return !!a;
+                for (a = 0; !console;);
+                return 0;
+            })();
+        }());
+    }
+    expect_stdout: "undefined"
+}