enhance conditionals (#5575)
This commit is contained in:
@@ -9662,10 +9662,20 @@ Compressor.prototype.compress = function(node) {
|
||||
var alt_index = last_index(alt_stats);
|
||||
for (var stats = []; body_index >= 0 && alt_index >= 0;) {
|
||||
var stat = body_stats[body_index];
|
||||
if (!stat.equals(alt_stats[alt_index])) break;
|
||||
body_stats.splice(body_index--, 1);
|
||||
alt_stats.splice(alt_index--, 1);
|
||||
stats.unshift(stat);
|
||||
var alt_stat = alt_stats[alt_index];
|
||||
if (stat.equals(alt_stat)) {
|
||||
body_stats.splice(body_index--, 1);
|
||||
alt_stats.splice(alt_index--, 1);
|
||||
stats.unshift(stat);
|
||||
} else {
|
||||
if (!(stat instanceof AST_SimpleStatement)) break;
|
||||
if (!(alt_stat instanceof AST_SimpleStatement)) break;
|
||||
var expr = stat.body.tail_node();
|
||||
if (!expr.equals(alt_stat.body.tail_node())) break;
|
||||
body_index = pop_expr(body_stats, stat.body, body_index);
|
||||
alt_index = pop_expr(alt_stats, alt_stat.body, alt_index);
|
||||
stats.unshift(make_node(AST_SimpleStatement, expr, { body: expr }));
|
||||
}
|
||||
}
|
||||
if (stats.length > 0) {
|
||||
self.body = body_stats.length > 0 ? make_node(AST_BlockStatement, self, {
|
||||
@@ -9692,6 +9702,17 @@ Compressor.prototype.compress = function(node) {
|
||||
return index;
|
||||
}
|
||||
|
||||
function pop_expr(stats, body, index) {
|
||||
if (body instanceof AST_Sequence) {
|
||||
stats[index] = make_node(AST_SimpleStatement, body, {
|
||||
body: make_sequence(body, body.expressions.slice(0, -1)),
|
||||
});
|
||||
} else {
|
||||
stats.splice(index--, 1);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
function sequencesize(stat, defuns, var_defs, refs) {
|
||||
if (stat == null) return [];
|
||||
if (stat instanceof AST_BlockStatement) {
|
||||
|
||||
Reference in New Issue
Block a user