handle circular function reference gracefully (#2446)

fixes #2442
This commit is contained in:
Alex Lam S.L
2017-11-07 02:37:23 +08:00
committed by GitHub
parent 2cfb5aa7da
commit bbedbf4ea0
2 changed files with 204 additions and 2 deletions

View File

@@ -4242,8 +4242,19 @@ merge(Compressor.prototype, {
d.fixed = fixed = make_node(AST_Function, fixed, fixed);
}
if (fixed && d.single_use) {
var value = fixed.optimize(compressor);
return value === fixed ? fixed.clone(true) : value;
var recurse;
if (fixed instanceof AST_Function) {
for (var i = 0; recurse = compressor.parent(i); i++) {
if (recurse instanceof AST_Lambda) {
var name = recurse.name;
if (name && name.definition() === d) break;
}
}
}
if (!recurse) {
var value = fixed.optimize(compressor);
return value === fixed ? fixed.clone(true) : value;
}
}
if (fixed && d.should_replace === undefined) {
var init;