From: Alex Lam S.L Date: Wed, 30 Dec 2020 17:47:00 +0000 (+0000) Subject: fix corner case with default values (#4484) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8b954b022bf206048f8380878251bd64795da5f9;p=UglifyJS.git fix corner case with default values (#4484) fixes #4483 --- diff --git a/lib/compress.js b/lib/compress.js index 3ac9e74d..aea3155a 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -3603,6 +3603,7 @@ merge(Compressor.prototype, { function is_lhs(node, parent) { if (parent instanceof AST_Assign) return parent.left === node && node; + if (parent instanceof AST_DefaultValue) return parent.name === node && node; if (parent instanceof AST_Destructured) return node; if (parent instanceof AST_DestructuredKeyVal) return node; if (parent instanceof AST_Unary) return unary_side_effects[parent.operator] && parent.expression; diff --git a/test/compress/default-values.js b/test/compress/default-values.js index 39fcddbd..5b21ae6a 100644 --- a/test/compress/default-values.js +++ b/test/compress/default-values.js @@ -1206,3 +1206,24 @@ issue_4468: { expect_stdout: "PASS" node_version: ">=6" } + +issue_4483: { + options = { + conditionals: true, + evaluate: true, + reduce_vars: true, + toplevel: true, + } + input: { + if (console) + var [ a = "FAIL" ] = [], b = a = "PASS"; + console.log(b); + } + expect: { + var a, b; + console && ([ a = "FAIL" ] = [], b = "PASS"); + console.log(b); + } + expect_stdout: "PASS" + node_version: ">=6" +} diff --git a/test/reduce.js b/test/reduce.js index 48030b0f..120868fe 100644 --- a/test/reduce.js +++ b/test/reduce.js @@ -124,7 +124,6 @@ module.exports = function reduce_test(testcase, minify_options, reduce_options) // ignore lvalues if (parent instanceof U.AST_Assign && parent.left === node) return; - if (parent instanceof U.AST_DestructuredArray) return; if (parent instanceof U.AST_DestructuredKeyVal && parent.value === node) return; if (parent instanceof U.AST_Unary && parent.expression === node) switch (parent.operator) { case "++":