diff --git a/lib/compress.js b/lib/compress.js index 2bbd9704a9..f3fe8a8e92 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -3913,7 +3913,7 @@ merge(Compressor.prototype, { if (node instanceof AST_Assign) { if (!in_use || node.left === sym && def.id in fixed_ids && fixed_ids[def.id] !== node) { value = get_rhs(node); - if (node.write_only) { + if (node.write_only === true) { value = value.drop_side_effect_free(compressor) || make_node(AST_Number, node, { value: 0 }); diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js index 2e131f7ded..b61af07a3a 100644 --- a/test/compress/drop-unused.js +++ b/test/compress/drop-unused.js @@ -2335,3 +2335,23 @@ function_parameter_ie8: { } expect_stdout: "PASS" } + +issue_3664: { + options = { + pure_getters: "strict", + unused: true, + } + input: { + console.log(function() { + var a, b = (a = (a = [ b && console.log("FAIL") ]).p = 0, 0); + return "PASS"; + }()); + } + expect: { + console.log(function() { + var b = ([ b && console.log("FAIL") ].p = 0, 0); + return "PASS"; + }()); + } + expect_stdout: "PASS" +}