More attempts to determine when addition is associative

Somebody hit me with bug reports on this. :)

Refs #300
This commit is contained in:
Mihai Bazon
2013-09-22 15:26:10 +03:00
parent 037199bfe2
commit afdaeba37d
3 changed files with 46 additions and 3 deletions

View File

@@ -1965,7 +1965,7 @@ merge(Compressor.prototype, {
self = make_node(AST_Binary, self, {
operator: "+",
left: make_node(AST_String, null, {
value: self.left.getValue() + self.right.left.getValue(),
value: "" + self.left.getValue() + self.right.left.getValue(),
start: self.left.start,
end: self.right.left.end
}),
@@ -1981,12 +1981,33 @@ merge(Compressor.prototype, {
operator: "+",
left: self.left.left,
right: make_node(AST_String, null, {
value: self.left.right.getValue() + self.right.getValue(),
value: "" + self.left.right.getValue() + self.right.getValue(),
start: self.left.right.start,
end: self.right.end
})
});
}
if (self.left instanceof AST_Binary
&& self.left.operator == "+"
&& self.left.is_string(compressor)
&& self.left.right instanceof AST_Constant
&& self.right instanceof AST_Binary
&& self.right.operator == "+"
&& self.right.left instanceof AST_Constant) {
self = make_node(AST_Binary, self, {
operator: "+",
left: make_node(AST_Binary, self.left, {
operator: "+",
left: self.left.left,
right: make_node(AST_String, null, {
value: "" + self.left.right.getValue() + self.right.left.getValue(),
start: self.left.right.start,
end: self.right.left.end
})
}),
right: self.right.right
});
}
}
}
return self.evaluate(compressor)[0];