diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-05-30 04:07:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-30 11:07:55 +0800 |
commit | 7e88d52faeb7032f54e9526b85042f06098e71b9 (patch) | |
tree | 633d8cc523a61689d9e50648cce47c0f5b07cc2f | |
parent | b9d5bba5fb8e70c10f25f56ff6e7228739461cfb (diff) | |
download | tracifyjs-7e88d52faeb7032f54e9526b85042f06098e71b9.tar.gz tracifyjs-7e88d52faeb7032f54e9526b85042f06098e71b9.zip |
fix corner case in `dead_code` (#4984)
-rw-r--r-- | lib/compress.js | 4 | ||||
-rw-r--r-- | test/compress/let.js | 34 |
2 files changed, 35 insertions, 3 deletions
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"; |