From: Alex Lam S.L Date: Tue, 9 Jun 2020 02:33:47 +0000 (+0100) Subject: fix corner case in `reduce_vars` (#3975) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=d764b6cc3b3af1b42d06fffb820006105172061f;p=UglifyJS.git fix corner case in `reduce_vars` (#3975) fixes #3974 --- 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" +}