fix corner case in `merge_vars` (#4524)
authorAlex Lam S.L <alexlamsl@gmail.com>
Fri, 8 Jan 2021 07:49:14 +0000 (07:49 +0000)
committerGitHub <noreply@github.com>
Fri, 8 Jan 2021 07:49:14 +0000 (15:49 +0800)
fixes #4523

lib/compress.js
test/compress/default-values.js

index bcffd8b..8652d6e 100644 (file)
@@ -4957,7 +4957,10 @@ merge(Compressor.prototype, {
                     node.right.walk(tw);
                     var marker = new TreeWalker(function(node) {
                         if (node instanceof AST_Destructured) return;
-                        if (node instanceof AST_DestructuredKeyVal) {
+                        if (node instanceof AST_DefaultValue) {
+                            node.value.walk(tw);
+                            node.name.walk(marker);
+                        } else if (node instanceof AST_DestructuredKeyVal) {
                             if (node.key instanceof AST_Node) {
                                 push();
                                 segment.block = node;
@@ -5177,7 +5180,7 @@ merge(Compressor.prototype, {
                 node.name.mark_symbol(node.value ? function(node) {
                     if (!(node instanceof AST_SymbolDeclaration)) return;
                     if (node instanceof AST_SymbolVar) {
-                        mark(node, false);
+                        mark(node);
                     } else {
                         references[node.definition().id] = false;
                     }
index 8e5910d..23e3174 100644 (file)
@@ -1527,3 +1527,25 @@ issue_4510_2: {
     expect_stdout: "PASS"
     node_version: ">=8"
 }
+
+issue_4523: {
+    options = {
+        merge_vars: true,
+    }
+    input: {
+        console.log(function() {
+            var a, b;
+            [ a = b = false ] = [ "FAIL" ];
+            return b || "PASS";
+        }());
+    }
+    expect: {
+        console.log(function() {
+            var a, b;
+            [ a = b = false ] = [ "FAIL" ];
+            return b || "PASS";
+        }());
+    }
+    expect_stdout: "PASS"
+    node_version: ">=6"
+}