fix reduce_vars on boolean binary expressions (#1819)

Side effects of `&&` and `||` have not mattered until #1814, which takes assignment expressions into account.
This commit is contained in:
Alex Lam S.L
2017-04-17 17:24:29 +08:00
committed by GitHub
parent 4ffb6fce76
commit 6d5f341999
2 changed files with 31 additions and 0 deletions

View File

@@ -340,6 +340,14 @@ merge(Compressor.prototype, {
});
}
}
if (node instanceof AST_Binary
&& (node.operator == "&&" || node.operator == "||")) {
node.left.walk(tw);
push();
node.right.walk(tw);
pop();
return true;
}
if (node instanceof AST_If) {
node.condition.walk(tw);
push();

View File

@@ -2217,3 +2217,26 @@ try_abort: {
}
expect_stdout: "1 undefined"
}
boolean_binary_assign: {
options = {
evaluate: true,
reduce_vars: true,
unused: true,
}
input: {
!function() {
var a;
void 0 && (a = 1);
console.log(a);
}();
}
expect: {
!function() {
var a;
void 0;
console.log(a);
}();
}
expect_stdout: "undefined"
}