boolean_expression ? true : false --> boolean_expression
This commit is contained in:
@@ -2651,6 +2651,10 @@ merge(Compressor.prototype, {
|
|||||||
|
|
||||||
// y?true:false --> !!y
|
// y?true:false --> !!y
|
||||||
if (is_true(consequent) && is_false(alternative)) {
|
if (is_true(consequent) && is_false(alternative)) {
|
||||||
|
if (self.condition.is_boolean()) {
|
||||||
|
// boolean_expression ? true : false --> boolean_expression
|
||||||
|
return self.condition;
|
||||||
|
}
|
||||||
self.condition = self.condition.negate(compressor);
|
self.condition = self.condition.negate(compressor);
|
||||||
return make_node(AST_UnaryPrefix, self.condition, {
|
return make_node(AST_UnaryPrefix, self.condition, {
|
||||||
operator: "!",
|
operator: "!",
|
||||||
|
|||||||
@@ -738,3 +738,77 @@ conditional_or: {
|
|||||||
a = condition + 3 || null;
|
a = condition + 3 || null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trivial_boolean_ternary_expressions : {
|
||||||
|
options = {
|
||||||
|
conditionals: true,
|
||||||
|
evaluate : true,
|
||||||
|
booleans : true
|
||||||
|
};
|
||||||
|
input: {
|
||||||
|
f('foo' in m ? true : false);
|
||||||
|
f('foo' in m ? false : true);
|
||||||
|
|
||||||
|
f(g ? true : false);
|
||||||
|
f(foo() ? true : false);
|
||||||
|
f("bar" ? true : false);
|
||||||
|
f(5 ? true : false);
|
||||||
|
f(5.7 ? true : false);
|
||||||
|
f(x - y ? true : false);
|
||||||
|
|
||||||
|
f(x == y ? true : false);
|
||||||
|
f(x === y ? !0 : !1);
|
||||||
|
f(x < y ? !0 : false);
|
||||||
|
f(x <= y ? true : false);
|
||||||
|
f(x > y ? true : !1);
|
||||||
|
f(x >= y ? !0 : !1);
|
||||||
|
|
||||||
|
f(g ? false : true);
|
||||||
|
f(foo() ? false : true);
|
||||||
|
f("bar" ? false : true);
|
||||||
|
f(5 ? false : true);
|
||||||
|
f(5.7 ? false : true);
|
||||||
|
f(x - y ? false : true);
|
||||||
|
|
||||||
|
f(x == y ? !1 : !0);
|
||||||
|
f(x === y ? false : true);
|
||||||
|
|
||||||
|
f(x < y ? false : true);
|
||||||
|
f(x <= y ? false : !0);
|
||||||
|
f(x > y ? !1 : true);
|
||||||
|
f(x >= y ? !1 : !0);
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
f('foo' in m);
|
||||||
|
f(!('foo' in m));
|
||||||
|
|
||||||
|
f(!!g);
|
||||||
|
f(!!foo());
|
||||||
|
f(!0);
|
||||||
|
f(!0);
|
||||||
|
f(!0);
|
||||||
|
f(!!(x - y));
|
||||||
|
|
||||||
|
f(x == y);
|
||||||
|
f(x === y);
|
||||||
|
f(x < y);
|
||||||
|
f(x <= y);
|
||||||
|
f(x > y);
|
||||||
|
f(x >= y);
|
||||||
|
|
||||||
|
f(!g);
|
||||||
|
f(!foo());
|
||||||
|
f(!1);
|
||||||
|
f(!1);
|
||||||
|
f(!1);
|
||||||
|
f(!(x - y));
|
||||||
|
|
||||||
|
f(x != y);
|
||||||
|
f(x !== y);
|
||||||
|
|
||||||
|
f(!(x < y));
|
||||||
|
f(!(x <= y));
|
||||||
|
f(!(x > y));
|
||||||
|
f(!(x >= y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user