fix corner case in conditionals (#4492)

This commit is contained in:
Alex Lam S.L
2021-01-01 23:53:15 +00:00
committed by GitHub
parent 0417a69c3e
commit dfb86ccdd1
2 changed files with 32 additions and 3 deletions

View File

@@ -9843,10 +9843,17 @@ merge(Compressor.prototype, {
&& !condition.has_side_effects(compressor)
&& !consequent.expression.has_side_effects(compressor)) {
var node = consequent.clone();
node.args[arg_index] = make_node(AST_Conditional, self, {
var arg = consequent.args[arg_index];
node.args[arg_index] = arg instanceof AST_Spread ? make_node(AST_Spread, self, {
expression: make_node(AST_Conditional, self, {
condition: condition,
consequent: arg.expression,
alternative: alternative.args[arg_index].expression,
}),
}) : make_node(AST_Conditional, self, {
condition: condition,
consequent: consequent.args[arg_index],
alternative: alternative.args[arg_index]
consequent: arg,
alternative: alternative.args[arg_index],
});
return node;
}