diff --git a/lib/compress.js b/lib/compress.js index 5438cc54da..82543be39b 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -7253,6 +7253,10 @@ Compressor.prototype.compress = function(node) { var def = node.definition(); var_defs[def.id] = (var_defs[def.id] || 0) + 1; assignments.add(def.id, node); + var fixed = node.fixed_value(true); + if (fixed && fixed.tail_node().operator == "=") { + verify_safe_usage(def, node, value_modified[def.id]); + } return true; } if (node instanceof AST_SymbolImport) { diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js index 06c0f46ae4..71b113fb03 100644 --- a/test/compress/drop-unused.js +++ b/test/compress/drop-unused.js @@ -3870,3 +3870,32 @@ issue_5908_2: { } expect_stdout: "PASS" } + +issue_5918: { + options = { + pure_getters: "strict", + reduce_vars: true, + unused: true, + } + input: { + var a; + (function(b) { + b.p = 42; + })(a = function() { + arguments; + }); + for (var i in a) + console.log("PASS"); + } + expect: { + var a; + (function(b) { + b.p = 42; + })(a = function() { + arguments; + }); + for (var i in a) + console.log("PASS"); + } + expect_stdout: "PASS" +}