@@ -4368,6 +4368,7 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
return !(sym instanceof AST_Destructured);
|
||||
})) return this;
|
||||
if (fn.rest instanceof AST_Destructured) return this;
|
||||
if (!args && !ignore_side_effects) return this;
|
||||
var stat = fn.first_statement();
|
||||
if (!(stat instanceof AST_Return)) {
|
||||
@@ -4394,18 +4395,8 @@ merge(Compressor.prototype, {
|
||||
if (!val) return;
|
||||
var cached_args = [];
|
||||
if (!args || all(fn.argnames, function(sym, i) {
|
||||
if (sym instanceof AST_DefaultValue) sym = sym.name;
|
||||
var def = sym.definition();
|
||||
if (def.orig[def.orig.length - 1] !== sym) return false;
|
||||
var value = args[i];
|
||||
def.references.forEach(function(node) {
|
||||
node._eval = function() {
|
||||
return value;
|
||||
};
|
||||
cached_args.push(node);
|
||||
});
|
||||
return true;
|
||||
}) || ignore_side_effects) {
|
||||
return assign(sym, args[i]);
|
||||
}) && !(fn.rest && !assign(fn.rest, args.slice(fn.argnames.length))) || ignore_side_effects) {
|
||||
fn.evaluating = true;
|
||||
val = val._eval(compressor, ignore_side_effects, cached, depth);
|
||||
delete fn.evaluating;
|
||||
@@ -4450,6 +4441,20 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
}
|
||||
return this;
|
||||
|
||||
function assign(sym, arg) {
|
||||
if (sym instanceof AST_DefaultValue) sym = sym.name;
|
||||
var def = sym.definition();
|
||||
if (def.orig[def.orig.length - 1] !== sym) return false;
|
||||
var value = arg;
|
||||
def.references.forEach(function(node) {
|
||||
node._eval = function() {
|
||||
return value;
|
||||
};
|
||||
cached_args.push(node);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
def(AST_New, return_this);
|
||||
def(AST_Template, function(compressor, ignore_side_effects, cached, depth) {
|
||||
|
||||
Reference in New Issue
Block a user