From: Alex Lam S.L Date: Tue, 21 Jul 2020 00:06:42 +0000 (+0100) Subject: fix corner case in `unused` (#4018) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=bce3919748b1ece4d98625fee450f6096d7bb849;p=UglifyJS.git fix corner case in `unused` (#4018) fixes #4017 --- diff --git a/lib/compress.js b/lib/compress.js index a464b664..8ea5d8c9 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4456,8 +4456,13 @@ merge(Compressor.prototype, { var sym = def.name.definition(); if (!drop_vars || sym.id in in_use_ids) { if (def.value && indexOf_assign(sym, def) < 0) { - def.value = def.value.drop_side_effect_free(compressor); - if (def.value) def.value.tail_node().write_only = false; + var value = def.value.drop_side_effect_free(compressor); + if (def.value !== value) def.value = value && make_sequence(def.value, [ + value, + make_node(AST_Number, def.value, { + value: 0 + }), + ]); } var old_def, var_defs = var_defs_by_id.get(sym.id); if (!def.value) { diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js index b66320ad..26721755 100644 --- a/test/compress/drop-unused.js +++ b/test/compress/drop-unused.js @@ -2718,7 +2718,7 @@ issue_3962_1: { 0..toString(); } while (0); if (c) console.log("PASS"); - })((a--, 1)); + }((a--, 1)), 0); void 0; } expect_stdout: "PASS" @@ -2751,7 +2751,7 @@ issue_3962_2: { 0..toString(); } while (0); if (c) console.log("PASS"); - })((a--, 1)); + }((a--, 1)), 0); } expect_stdout: "PASS" } @@ -2789,3 +2789,27 @@ issue_3986: { } expect_stdout: "0" } + +issue_4017: { + options = { + pure_getters: "strict", + reduce_vars: true, + unused: true, + } + input: { + var a = 0; + console.log(function f() { + var b = c &= 0; + var c = a++ + (A = a); + var d = c && c[f]; + }()); + } + expect: { + var a = 0; + console.log(function() { + c &= 0; + var c = (a++, A = a, 0); + }()); + } + expect_stdout: "undefined" +}