From 5205dbcbf4f522f8b4dc9f9f9727b621982c9f28 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Wed, 27 Dec 2017 07:00:12 +0800 Subject: retain recursive function names (#2667) fixes #2665 --- lib/compress.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/compress.js b/lib/compress.js index 4a2a436b..c8cddc37 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -4700,9 +4700,14 @@ merge(Compressor.prototype, { if (d.recursive_refs > 0 && fixed.name instanceof AST_SymbolDefun) { value = fixed.clone(true); var defun_def = value.name.definition(); - value.name = make_node(AST_SymbolLambda, value.name, value.name); - value.name.scope = value; - var lambda_def = value.def_function(value.name); + var lambda_def = value.variables.get(value.name.name); + var name = lambda_def && lambda_def.orig[0]; + if (!(name instanceof AST_SymbolLambda)) { + name = make_node(AST_SymbolLambda, value.name, value.name); + name.scope = value; + value.name = name; + lambda_def = value.def_function(name); + } value.walk(new TreeWalker(function(node) { if (node instanceof AST_SymbolRef && node.definition() === defun_def) { node.thedef = lambda_def; -- cgit v1.2.3