aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2020-06-09 03:33:47 +0100
committerGitHub <noreply@github.com>2020-06-09 10:33:47 +0800
commitd764b6cc3b3af1b42d06fffb820006105172061f (patch)
treed516281284741792447ddb4328a4094cfadbdb90
parent08c4729eb45e0e7d5ab34a8ffa814b6093822930 (diff)
downloadtracifyjs-d764b6cc3b3af1b42d06fffb820006105172061f.tar.gz
tracifyjs-d764b6cc3b3af1b42d06fffb820006105172061f.zip
fix corner case in `reduce_vars` (#3975)
fixes #3974
-rw-r--r--lib/compress.js4
-rw-r--r--test/compress/reduce_vars.js25
2 files changed, 28 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js
index d82c8124..907c9e75 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -4032,7 +4032,9 @@ merge(Compressor.prototype, {
return all(this.elements);
});
def(AST_Binary, function() {
- return this.left.is_constant_expression() && this.right.is_constant_expression();
+ return this.left.is_constant_expression()
+ && this.right.is_constant_expression()
+ && (this.operator != "in" || is_object(this.right.tail_node()));
});
def(AST_Constant, return_true);
def(AST_Lambda, function(scope) {
diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js
index 41eb0096..9010fb1e 100644
--- a/test/compress/reduce_vars.js
+++ b/test/compress/reduce_vars.js
@@ -7358,3 +7358,28 @@ issue_3958: {
"0",
]
}
+
+issue_3974: {
+ options = {
+ reduce_vars: true,
+ toplevel: true,
+ unused: true,
+ }
+ input: {
+ try {
+ var a = 0 in 0;
+ 0 && a;
+ } catch (e) {
+ console.log("PASS");
+ }
+ }
+ expect: {
+ try {
+ var a = 0 in 0;
+ 0 && a;
+ } catch (e) {
+ console.log("PASS");
+ }
+ }
+ expect_stdout: "PASS"
+}