fix corner case in comparisons (#3414)

fixes #3413
This commit is contained in:
Alex Lam S.L
2019-05-15 01:01:18 +08:00
committed by GitHub
parent f87caac9d8
commit 1f0def10eb
2 changed files with 19 additions and 2 deletions

View File

@@ -2348,7 +2348,7 @@ merge(Compressor.prototype, {
case "&&": case "&&":
return this.left.is_defined(compressor) && this.right.is_defined(compressor); return this.left.is_defined(compressor) && this.right.is_defined(compressor);
case "||": case "||":
return this.left.is_defined(compressor) || this.right.is_defined(compressor); return this.left.is_truthy() || this.right.is_defined(compressor);
default: default:
return true; return true;
} }
@@ -2368,7 +2368,7 @@ merge(Compressor.prototype, {
if (this.is_immutable()) return true; if (this.is_immutable()) return true;
var fixed = this.fixed_value(); var fixed = this.fixed_value();
if (!fixed) return false; if (!fixed) return false;
this.is_defined = return_true; this.is_defined = return_false;
var result = fixed.is_defined(compressor); var result = fixed.is_defined(compressor);
delete this.is_defined; delete this.is_defined;
return result; return result;

View File

@@ -380,3 +380,20 @@ unsafe_indexOf: {
} }
expect_stdout: "PASS" 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"
}