aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-05-30 04:07:55 +0100
committerGitHub <noreply@github.com>2021-05-30 11:07:55 +0800
commit7e88d52faeb7032f54e9526b85042f06098e71b9 (patch)
tree633d8cc523a61689d9e50648cce47c0f5b07cc2f
parentb9d5bba5fb8e70c10f25f56ff6e7228739461cfb (diff)
downloadtracifyjs-7e88d52faeb7032f54e9526b85042f06098e71b9.tar.gz
tracifyjs-7e88d52faeb7032f54e9526b85042f06098e71b9.zip
fix corner case in `dead_code` (#4984)
-rw-r--r--lib/compress.js4
-rw-r--r--test/compress/let.js34
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";