some boolean cleanup
This commit is contained in:
@@ -1573,35 +1573,6 @@ function Compressor(options, false_by_default) {
|
|||||||
self.right = tmp;
|
self.right = tmp;
|
||||||
};
|
};
|
||||||
switch (self.operator) {
|
switch (self.operator) {
|
||||||
case "==":
|
|
||||||
case "!=":
|
|
||||||
var ll = self.left.evaluate(compressor);
|
|
||||||
var rr = self.right.evaluate(compressor);
|
|
||||||
if (ll.length == 2 && typeof ll[1] == "boolean") {
|
|
||||||
compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]", {
|
|
||||||
operator : self.operator,
|
|
||||||
value : ll[1],
|
|
||||||
file : self.start.file,
|
|
||||||
line : self.start.line,
|
|
||||||
col : self.start.col
|
|
||||||
});
|
|
||||||
self.left = make_node(AST_Number, self.left, {
|
|
||||||
value: +ll[1]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (rr.length == 2 && typeof rr[1] == "boolean") {
|
|
||||||
compressor.warn("Non-strict equality against boolean {operator} {value} [{file}:{line},{col}]", {
|
|
||||||
operator : self.operator,
|
|
||||||
value : rr[1],
|
|
||||||
file : self.start.file,
|
|
||||||
line : self.start.line,
|
|
||||||
col : self.start.col
|
|
||||||
});
|
|
||||||
self.right = make_node(AST_Number, self.right, {
|
|
||||||
value: +rr[1]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "<": reverse(">"); break;
|
case "<": reverse(">"); break;
|
||||||
case "<=": reverse(">="); break;
|
case "<=": reverse(">="); break;
|
||||||
}
|
}
|
||||||
@@ -1743,31 +1714,33 @@ function Compressor(options, false_by_default) {
|
|||||||
return self;
|
return self;
|
||||||
});
|
});
|
||||||
|
|
||||||
SQUEEZE(AST_True, function(self, compressor){
|
SQUEEZE(AST_Boolean, function(self, compressor){
|
||||||
return self.optimize(compressor);
|
return self.optimize(compressor);
|
||||||
});
|
});
|
||||||
|
|
||||||
AST_True.DEFMETHOD("optimize", function(compressor){
|
AST_Boolean.DEFMETHOD("optimize", function(compressor){
|
||||||
if (compressor.option("booleans")) return make_node(AST_UnaryPrefix, this, {
|
if (compressor.option("booleans")) {
|
||||||
operator: "!",
|
var p = compressor.parent();
|
||||||
expression: make_node(AST_Number, this, {
|
if (p instanceof AST_Binary && (p.operator == "=="
|
||||||
value: 0
|
|| p.operator == "!=")) {
|
||||||
})
|
compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]", {
|
||||||
});
|
operator : p.operator,
|
||||||
return this;
|
value : this.value,
|
||||||
});
|
file : p.start.file,
|
||||||
|
line : p.start.line,
|
||||||
SQUEEZE(AST_False, function(self, compressor){
|
col : p.start.col,
|
||||||
return self.optimize(compressor);
|
});
|
||||||
});
|
return make_node(AST_Number, this, {
|
||||||
|
value: +this.value
|
||||||
AST_False.DEFMETHOD("optimize", function(compressor){
|
});
|
||||||
if (compressor.option("booleans")) return make_node(AST_UnaryPrefix, this, {
|
}
|
||||||
operator: "!",
|
return make_node(AST_UnaryPrefix, this, {
|
||||||
expression: make_node(AST_Number, this, {
|
operator: "!",
|
||||||
value: 1
|
expression: make_node(AST_Number, this, {
|
||||||
})
|
value: 1 - this.value
|
||||||
});
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user