diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2020-06-09 03:33:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-09 10:33:47 +0800 |
commit | d764b6cc3b3af1b42d06fffb820006105172061f (patch) | |
tree | d516281284741792447ddb4328a4094cfadbdb90 | |
parent | 08c4729eb45e0e7d5ab34a8ffa814b6093822930 (diff) | |
download | tracifyjs-d764b6cc3b3af1b42d06fffb820006105172061f.tar.gz tracifyjs-d764b6cc3b3af1b42d06fffb820006105172061f.zip |
fix corner case in `reduce_vars` (#3975)
fixes #3974
-rw-r--r-- | lib/compress.js | 4 | ||||
-rw-r--r-- | test/compress/reduce_vars.js | 25 |
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" +} |