@@ -3171,16 +3171,16 @@ merge(Compressor.prototype, {
|
||||
&& !exp.uses_arguments
|
||||
&& !exp.uses_eval
|
||||
&& !self.has_pure_annotation(compressor)) {
|
||||
var body;
|
||||
var value;
|
||||
if (stat instanceof AST_Return) {
|
||||
body = stat.value.clone(true);
|
||||
value = stat.value.clone(true);
|
||||
} else if (stat instanceof AST_SimpleStatement) {
|
||||
body = [];
|
||||
merge_sequence(body, stat.body.clone(true));
|
||||
merge_sequence(body, make_node(AST_Undefined, self));
|
||||
body = make_sequence(self, body);
|
||||
value = make_node(AST_UnaryPrefix, stat, {
|
||||
operator: "void",
|
||||
expression: stat.body.clone(true)
|
||||
});
|
||||
}
|
||||
if (body) {
|
||||
if (value) {
|
||||
var fn = exp.clone();
|
||||
fn.argnames = [];
|
||||
fn.body = [];
|
||||
@@ -3200,17 +3200,25 @@ merge(Compressor.prototype, {
|
||||
}));
|
||||
}
|
||||
fn.body.push(make_node(AST_Return, self, {
|
||||
value: body
|
||||
value: value
|
||||
}));
|
||||
body = fn.transform(compressor).body;
|
||||
var body = fn.transform(compressor).body;
|
||||
if (body.length == 0) return make_node(AST_Undefined, self);
|
||||
if (body.length == 1 && body[0] instanceof AST_Return) {
|
||||
if (!body[0].value) return make_node(AST_Undefined, self);
|
||||
body = best_of(compressor, body[0].value, self);
|
||||
value = body[0].value;
|
||||
if (!value) return make_node(AST_Undefined, self);
|
||||
value.walk(new TreeWalker(function(node) {
|
||||
if (value === self) return true;
|
||||
if (node instanceof AST_SymbolRef && exp.variables.has(node.name)) {
|
||||
value = self;
|
||||
return true;
|
||||
}
|
||||
}));
|
||||
if (value !== self) value = best_of(compressor, value, self);
|
||||
} else {
|
||||
body = self;
|
||||
value = self;
|
||||
}
|
||||
if (body !== self) return body;
|
||||
if (value !== self) return value;
|
||||
}
|
||||
}
|
||||
if (compressor.option("side_effects") && all(exp.body, is_empty)) {
|
||||
|
||||
Reference in New Issue
Block a user