Disallow reversal where lhs has higher or equal precedence

Fixes #267
This commit is contained in:
Richard van Velzen
2013-10-29 21:37:36 +01:00
parent b214d3786f
commit 785c6064cc
2 changed files with 16 additions and 1 deletions

View File

@@ -1907,7 +1907,11 @@ merge(Compressor.prototype, {
// if right is a constant, whatever side effects the
// left side might have could not influence the
// result. hence, force switch.
reverse(null, true);
if (!(self.left instanceof AST_Binary
&& PRECEDENCE[self.left.operator] >= PRECEDENCE[self.operator])) {
reverse(null, true);
}
}
if (/^[!=]==?$/.test(self.operator)) {
if (self.left instanceof AST_SymbolRef && self.right instanceof AST_Conditional) {

View File

@@ -0,0 +1,11 @@
issue_267: {
options = { comparisons: true };
input: {
x = a % b / b * c * 2;
x = a % b * 2
}
expect: {
x = a % b / b * c * 2;
x = a % b * 2;
}
}