aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/compress.js1
-rw-r--r--test/compress/default-values.js21
-rw-r--r--test/reduce.js1
3 files changed, 22 insertions, 1 deletions
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 "++":