fix corner case in comparisons (#3877)
This commit is contained in:
@@ -6819,7 +6819,7 @@ merge(Compressor.prototype, {
|
||||
if ((self.left.is_string(compressor) && self.right.is_string(compressor)) ||
|
||||
(self.left.is_number(compressor) && self.right.is_number(compressor)) ||
|
||||
(self.left.is_boolean(compressor) && self.right.is_boolean(compressor)) ||
|
||||
self.left.equivalent_to(self.right)) {
|
||||
can_self_compare(self.left) && self.left.equivalent_to(self.right)) {
|
||||
self.operator = self.operator.slice(0, 2);
|
||||
}
|
||||
// XXX: intentionally falling down to the next case
|
||||
@@ -7342,6 +7342,13 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
return try_evaluate(compressor, self);
|
||||
|
||||
function can_self_compare(node) {
|
||||
if (node instanceof AST_Dot) return can_self_compare(node.expression);
|
||||
if (node instanceof AST_Sub) return can_self_compare(node.expression) && can_self_compare(node.property);
|
||||
if (node instanceof AST_Symbol) return true;
|
||||
return !node.has_side_effects(compressor);
|
||||
}
|
||||
|
||||
function align(ref, op) {
|
||||
switch (ref) {
|
||||
case "-":
|
||||
|
||||
Reference in New Issue
Block a user