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")) {
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;
}); });