if (fn.evaluating) return this;
if (fn.name && fn.name.definition().recursive_refs > 0) return this;
if (this.is_expr_pure(compressor)) return this;
+ var args = eval_args(this.args);
+ if (!args && !ignore_side_effects) return this;
var stat = fn.first_statement();
if (!(stat instanceof AST_Return)) {
if (ignore_side_effects) {
fn.walk(new TreeWalker(function(node) {
if (found) return true;
if (node instanceof AST_Return) {
- if (node.value && node.value.evaluate(compressor, true) !== undefined) found = true;
+ if (node.value && node.value._eval(compressor, true, cached, depth) !== undefined) {
+ found = true;
+ }
return true;
}
if (node instanceof AST_Scope && node !== fn) return true;
}
return this;
}
- var args = eval_args(this.args);
- if (!args && !ignore_side_effects) return this;
var val = stat.value;
if (!val) return;
var cached_args = [];