diff --git a/lib/compress.js b/lib/compress.js index 7ea1e533..7ea93ecd 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -11085,9 +11085,7 @@ merge(Compressor.prototype, { ]).optimize(compressor); } } - } else if (self.left instanceof AST_SymbolRef && all(self.left.definition().orig, function(sym) { - return !(sym instanceof AST_SymbolConst); - })) { + } else if (self.left instanceof AST_SymbolRef && can_drop_symbol(self.left, compressor)) { var parent; if (self.operator == "=" && self.left.equivalent_to(self.right) && !((parent = compressor.parent()) instanceof AST_UnaryPrefix && parent.operator == "delete")) { diff --git a/test/compress/let.js b/test/compress/let.js index c59308c4..4df5bb01 100644 --- a/test/compress/let.js +++ b/test/compress/let.js @@ -20,6 +20,39 @@ retain_block: { node_version: ">=4" } +retain_assignment: { + options = { + dead_code: true, + reduce_vars: true, + } + input: { + "use strict"; + function f() { + return a = 0; + let a; + } + try { + f(); + } catch (e) { + console.log("PASS"); + } + } + expect: { + "use strict"; + function f() { + return a = 0; + let a; + } + try { + f(); + } catch (e) { + console.log("PASS"); + } + } + expect_stdout: "PASS" + node_version: ">=4" +} + retain_catch: { options = { dead_code: true, @@ -897,6 +930,7 @@ issue_4210: { issue_4212_1: { options = { dead_code: true, + reduce_vars: true, } input: { "use strict";