aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2019-05-15 01:01:18 +0800
committerGitHub <noreply@github.com>2019-05-15 01:01:18 +0800
commit1f0def10ebc637ddd6c24094942ae616f94ed25f (patch)
tree139388e335d0ac1b301d4e982ba76ea35aef3174
parentf87caac9d89061ce005c56384e08fd94ca80d94c (diff)
downloadtracifyjs-1f0def10ebc637ddd6c24094942ae616f94ed25f.tar.gz
tracifyjs-1f0def10ebc637ddd6c24094942ae616f94ed25f.zip
fix corner case in `comparisons` (#3414)
fixes #3413
-rw-r--r--lib/compress.js4
-rw-r--r--test/compress/comparisons.js17
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"
+}