From 4c89550c43974d5d570f132b2d8bc105c05cc618 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Tue, 5 Jan 2021 17:26:19 +0000 Subject: [PATCH] fix corner case in`default_values` (#4511) fixes #4510 --- lib/compress.js | 3 ++- test/compress/default-values.js | 48 +++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/lib/compress.js b/lib/compress.js index 1714306e..dcb2cc4c 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -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; }); diff --git a/test/compress/default-values.js b/test/compress/default-values.js index 0fa27ea5..8e5910d9 100644 --- a/test/compress/default-values.js +++ b/test/compress/default-values.js @@ -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" +} -- 2.34.1