some boolean cleanup

This commit is contained in:
Mihai Bazon
2012-09-25 10:31:03 +03:00
parent 42038fd67f
commit 368ac8f93c

View File

@@ -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")) {
var p = compressor.parent();
if (p instanceof AST_Binary && (p.operator == "=="
|| p.operator == "!=")) {
compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]", {
operator : p.operator,
value : this.value,
file : p.start.file,
line : p.start.line,
col : p.start.col,
});
return make_node(AST_Number, this, {
value: +this.value
});
}
return make_node(AST_UnaryPrefix, this, {
operator: "!", operator: "!",
expression: make_node(AST_Number, this, { expression: make_node(AST_Number, this, {
value: 0 value: 1 - this.value
})
});
return this;
});
SQUEEZE(AST_False, function(self, compressor){
return self.optimize(compressor);
});
AST_False.DEFMETHOD("optimize", function(compressor){
if (compressor.option("booleans")) return make_node(AST_UnaryPrefix, this, {
operator: "!",
expression: make_node(AST_Number, this, {
value: 1
}) })
}); });
}
return this; return this;
}); });