@@ -8792,17 +8792,58 @@ Compressor.prototype.compress = function(node) {
|
||||
self.body = self.alternative || make_node(AST_EmptyStatement, self);
|
||||
self.alternative = tmp;
|
||||
}
|
||||
var body = [], var_defs = [], refs = [];
|
||||
var body_exprs = sequencesize(self.body, body, var_defs, refs);
|
||||
var alt_exprs = sequencesize(self.alternative, body, var_defs, refs);
|
||||
var body_defuns = [];
|
||||
var body_var_defs = [];
|
||||
var body_refs = [];
|
||||
var body_exprs = sequencesize(self.body, body_defuns, body_var_defs, body_refs);
|
||||
var alt_defuns = [];
|
||||
var alt_var_defs = [];
|
||||
var alt_refs = [];
|
||||
var alt_exprs = sequencesize(self.alternative, alt_defuns, alt_var_defs, alt_refs);
|
||||
if (body_exprs instanceof AST_BlockStatement || alt_exprs instanceof AST_BlockStatement) {
|
||||
var body = [], var_defs = [];
|
||||
if (body_exprs) {
|
||||
[].push.apply(body, body_defuns);
|
||||
[].push.apply(var_defs, body_var_defs);
|
||||
if (body_exprs instanceof AST_BlockStatement) {
|
||||
self.body = body_exprs;
|
||||
} else if (body_exprs.length == 0) {
|
||||
self.body = make_node(AST_EmptyStatement, self.body);
|
||||
} else {
|
||||
self.body = make_node(AST_SimpleStatement, self.body, {
|
||||
body: make_sequence(self.body, body_exprs),
|
||||
});
|
||||
}
|
||||
body_refs.forEach(function(ref) {
|
||||
ref.definition().references.push(ref);
|
||||
});
|
||||
}
|
||||
if (alt_exprs) {
|
||||
[].push.apply(body, alt_defuns);
|
||||
[].push.apply(var_defs, alt_var_defs);
|
||||
if (alt_exprs instanceof AST_BlockStatement) {
|
||||
self.alternative = alt_exprs;
|
||||
} else if (alt_exprs.length == 0) {
|
||||
self.alternative = null;
|
||||
} else {
|
||||
self.alternative = make_node(AST_SimpleStatement, self.alternative, {
|
||||
body: make_sequence(self.alternative, alt_exprs),
|
||||
});
|
||||
}
|
||||
alt_refs.forEach(function(ref) {
|
||||
ref.definition().references.push(ref);
|
||||
});
|
||||
}
|
||||
if (var_defs.length > 0) body.push(make_node(AST_Var, self, { definitions: var_defs }));
|
||||
body.push(self);
|
||||
if (body_exprs instanceof AST_BlockStatement) self.body = body_exprs;
|
||||
if (alt_exprs instanceof AST_BlockStatement) self.alternative = alt_exprs;
|
||||
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
|
||||
if (body.length > 0) {
|
||||
body.push(self);
|
||||
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
|
||||
}
|
||||
} else if (body_exprs && alt_exprs) {
|
||||
if (var_defs.length > 0) body.push(make_node(AST_Var, self, { definitions: var_defs }));
|
||||
var body = body_defuns.concat(alt_defuns);
|
||||
if (body_var_defs.length > 0 || alt_var_defs.length > 0) body.push(make_node(AST_Var, self, {
|
||||
definitions: body_var_defs.concat(alt_var_defs),
|
||||
}));
|
||||
if (body_exprs.length == 0) {
|
||||
body.push(make_node(AST_SimpleStatement, self.condition, {
|
||||
body: alt_exprs.length > 0 ? make_node(AST_Binary, self, {
|
||||
@@ -8835,7 +8876,10 @@ Compressor.prototype.compress = function(node) {
|
||||
}),
|
||||
}).optimize(compressor));
|
||||
}
|
||||
refs.forEach(function(ref) {
|
||||
body_refs.forEach(function(ref) {
|
||||
ref.definition().references.push(ref);
|
||||
});
|
||||
alt_refs.forEach(function(ref) {
|
||||
ref.definition().references.push(ref);
|
||||
});
|
||||
return make_node(AST_BlockStatement, self, { body: body }).optimize(compressor);
|
||||
|
||||
Reference in New Issue
Block a user