fix corner case in`default_values` (#4511)
authorAlex Lam S.L <alexlamsl@gmail.com>
Tue, 5 Jan 2021 17:26:19 +0000 (17:26 +0000)
committerGitHub <noreply@github.com>
Tue, 5 Jan 2021 17:26:19 +0000 (01:26 +0800)
fixes #4510

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

index 1714306..dcb2cc4 100644 (file)
@@ -6143,8 +6143,9 @@ merge(Compressor.prototype, {
                     var values = value instanceof AST_Array && value.elements;
                     var elements = [];
                     node.elements.forEach(function(element, index) {
-                        if (element instanceof AST_Hole) return;
                         value = values && values[index];
+                        if (value instanceof AST_Spread) value = values = null;
+                        if (element instanceof AST_Hole) return;
                         element = element.transform(trimmer);
                         if (element) elements[index] = element;
                     });
index 0fa27ea..8e5910d 100644 (file)
@@ -1479,3 +1479,51 @@ issue_4502_4: {
     expect_stdout: "42"
     node_version: ">=6"
 }
+
+issue_4510_1: {
+    options = {
+        default_values: true,
+        unused: true,
+    }
+    input: {
+        var a = [];
+        var [ , b = console.log("PASS") ] = [ ...a, null ];
+    }
+    expect: {
+        var a = [];
+        var [ , b = console.log("PASS") ] = [ ...a, null ];
+    }
+    expect_stdout: "PASS"
+    node_version: ">=6"
+}
+
+issue_4510_2: {
+    options = {
+        default_values: true,
+        unused: true,
+    }
+    input: {
+        var o = {
+            p: void 0,
+        };
+        var {
+            p: a = console.log("PASS"),
+        } = {
+            p: null,
+            ...o,
+        };
+    }
+    expect: {
+        var o = {
+            p: void 0,
+        };
+        var {
+            p: a = console.log("PASS"),
+        } = {
+            p: null,
+            ...o,
+        };
+    }
+    expect_stdout: "PASS"
+    node_version: ">=8"
+}