fix cascade on delete operator (#1687)

Conditions including strict mode would make `delete` return `true` or `false`, and are too complex to be evaluated by the compressor.

Suppress assignment folding into said operator.

fixes #1685
This commit is contained in:
Alex Lam S.L
2017-03-26 18:08:44 +08:00
committed by GitHub
parent 3276740779
commit e76fb354eb
2 changed files with 28 additions and 2 deletions

View File

@@ -2542,7 +2542,6 @@ merge(Compressor.prototype, {
continue;
}
}
var case_side_effects = branch instanceof AST_Case && branch.expression.has_side_effects(compressor);
if (aborts(branch)) {
var block = make_node(AST_BlockStatement, branch, branch).print_to_string();
if (!fallthrough && prev_block === block) body[body.length - 1].body = [];
@@ -2946,7 +2945,10 @@ merge(Compressor.prototype, {
field = "left";
}
} else if (cdr instanceof AST_Call
|| cdr instanceof AST_Unary && cdr.operator != "++" && cdr.operator != "--") {
|| cdr instanceof AST_Unary
&& cdr.operator != "delete"
&& cdr.operator != "++"
&& cdr.operator != "--") {
field = "expression";
} else break;
parent = cdr;