diff --git a/lib/compress.js b/lib/compress.js index 1c4df6cb..99d9b9c1 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -5563,6 +5563,7 @@ merge(Compressor.prototype, { fn = fn.fixed_value(); } if (!(fn instanceof AST_Defun || fn instanceof AST_Function)) break; + if (fn.rest) break; if (fn.uses_arguments) break; if (fn === call.expression) { if (fn.parent_scope !== self) break; diff --git a/test/compress/rests.js b/test/compress/rests.js index 24c6f878..7b793c55 100644 --- a/test/compress/rests.js +++ b/test/compress/rests.js @@ -1109,3 +1109,45 @@ issue_5108: { expect_stdout: "PASS" node_version: ">=6" } + +issue_5128_1: { + options = { + inline: true, + } + input: { + console.log(function() { + return function f(...[ a ]) { + return a; + }("PASS"); + }()); + } + expect: { + console.log(function f(...[ a ]) { + return a; + }("PASS")); + } + expect_stdout: "PASS" + node_version: ">=6" +} + +issue_5128_2: { + options = { + inline: true, + keep_fnames: true, + unused: true, + } + input: { + console.log(function() { + return function f(...[ a ]) { + return a; + }("PASS"); + }()); + } + expect: { + console.log(function f(...[ a ]) { + return a; + }("PASS")); + } + expect_stdout: "PASS" + node_version: ">=6" +}