From: Alex Lam S.L Date: Wed, 20 Mar 2019 18:58:33 +0000 (+0800) Subject: enhance `inline` (#3352) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=54b0b49b6810ab77a733da6a88133ad47940c9d9;p=UglifyJS.git enhance `inline` (#3352) --- diff --git a/lib/compress.js b/lib/compress.js index 778d7fa9..fe6e72d1 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -5072,7 +5072,7 @@ merge(Compressor.prototype, { } } while (!(scope instanceof AST_Scope)); var safe_to_inject = (!(scope instanceof AST_Toplevel) || compressor.toplevel.vars) - && fn.parent_scope === compressor.find_parent(AST_Scope); + && (exp !== fn || fn.parent_scope === compressor.find_parent(AST_Scope)); var inline = compressor.option("inline"); if (!can_inject_vars(catches, inline >= 3 && safe_to_inject)) return false; if (!can_inject_args(catches, inline >= 2 && safe_to_inject)) return false; diff --git a/test/compress/functions.js b/test/compress/functions.js index a52796c2..cb7a1b86 100644 --- a/test/compress/functions.js +++ b/test/compress/functions.js @@ -2675,3 +2675,31 @@ cross_references_3: { "9 27", ] } + +loop_inline: { + options = { + inline: true, + reduce_vars: true, + unused: true, + } + input: { + console.log(function(o) { + function g(p) { + return o[p]; + } + function h(q) { + while (g(q)); + } + return h; + }([ 1, "foo", 0 ])(2)); + } + expect: { + console.log(function(o) { + return function(q) { + while (p = q, o[p]); + var p; + }; + }([ 1, "foo", 0 ])(2)); + } + expect_stdout: "undefined" +}