From 1f0def10ebc637ddd6c24094942ae616f94ed25f Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Wed, 15 May 2019 01:01:18 +0800 Subject: [PATCH] fix corner case in `comparisons` (#3414) fixes #3413 --- lib/compress.js | 4 ++-- test/compress/comparisons.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/compress.js b/lib/compress.js index 3bb6cb24..f7730cd5 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2348,7 +2348,7 @@ merge(Compressor.prototype, { case "&&": return this.left.is_defined(compressor) && this.right.is_defined(compressor); case "||": - return this.left.is_defined(compressor) || this.right.is_defined(compressor); + return this.left.is_truthy() || this.right.is_defined(compressor); default: return true; } @@ -2368,7 +2368,7 @@ merge(Compressor.prototype, { if (this.is_immutable()) return true; var fixed = this.fixed_value(); if (!fixed) return false; - this.is_defined = return_true; + this.is_defined = return_false; var result = fixed.is_defined(compressor); delete this.is_defined; return result; diff --git a/test/compress/comparisons.js b/test/compress/comparisons.js index ef0db00c..461f415c 100644 --- a/test/compress/comparisons.js +++ b/test/compress/comparisons.js @@ -380,3 +380,20 @@ unsafe_indexOf: { } expect_stdout: "PASS" } + +issue_3413: { + options = { + comparisons: true, + evaluate: true, + side_effects: true, + } + input: { + var b; + void 0 !== ("" < b || void 0) || console.log("PASS"); + } + expect: { + var b; + void 0 !== ("" < b || void 0) || console.log("PASS"); + } + expect_stdout: "PASS" +} -- 2.34.1