fix corner case in sequences (#4798)

This commit is contained in:
Alex Lam S.L
2021-03-18 00:31:55 +00:00
committed by GitHub
parent 7da49b5709
commit 48c46fa9a7
2 changed files with 69 additions and 6 deletions

View File

@@ -9443,14 +9443,9 @@ merge(Compressor.prototype, {
&& !(exp instanceof AST_SymbolRef
|| exp instanceof AST_PropAccess
|| is_identifier_atom(exp))) {
if (exp instanceof AST_Sequence) {
exp = exp.expressions.slice();
exp.push(make_node(AST_True, self));
return make_sequence(self, exp).optimize(compressor);
}
return make_sequence(self, [ exp, make_node(AST_True, self) ]).optimize(compressor);
}
if (compressor.option("sequences") && !(op == "typeof" && is_undeclared_ref(exp.tail_node()))) {
if (compressor.option("sequences") && can_lift()) {
var seq = lift_sequence_in_expression(self, compressor);
if (seq !== self) return seq.optimize(compressor);
}
@@ -9500,6 +9495,17 @@ merge(Compressor.prototype, {
// avoids infinite recursion of numerals
return op == "-" && (exp instanceof AST_Number || exp instanceof AST_Infinity)
? self : try_evaluate(compressor, self);
function can_lift() {
switch (op) {
case "delete":
return !is_identifier_atom(exp.tail_node());
case "typeof":
return !is_undeclared_ref(exp.tail_node());
default:
return true;
}
}
});
OPT(AST_Await, function(self, compressor) {