diff options
-rw-r--r-- | lib/compress.js | 8 | ||||
-rw-r--r-- | test/compress/default-values.js | 28 |
2 files changed, 32 insertions, 4 deletions
diff --git a/lib/compress.js b/lib/compress.js index d5c22063..538b906e 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -7692,7 +7692,9 @@ merge(Compressor.prototype, { return !(arg instanceof AST_Spread); })) return; var pos = 0, last = 0; - var drop_fargs = fn === exp && !fn.name && compressor.drop_fargs(fn, call) ? function(argname, arg) { + var is_iife = fn === exp && !fn.name; + var drop_defaults = is_iife && compressor.option("default_values"); + var drop_fargs = is_iife && compressor.drop_fargs(fn, call) ? function(argname, arg) { if (!argname) return true; if (argname instanceof AST_DestructuredArray) { return argname.elements.length == 0 && arg instanceof AST_Array; @@ -7705,9 +7707,7 @@ merge(Compressor.prototype, { var side_effects = []; for (var i = 0; i < args.length; i++) { var argname = fn.argnames[i]; - if (compressor.option("default_values") - && argname instanceof AST_DefaultValue - && args[i].is_defined(compressor)) { + if (drop_defaults && argname instanceof AST_DefaultValue && args[i].is_defined(compressor)) { fn.argnames[i] = argname = argname.name; } if (!argname || "__unused" in argname) { diff --git a/test/compress/default-values.js b/test/compress/default-values.js index ec7c10ff..cefffc58 100644 --- a/test/compress/default-values.js +++ b/test/compress/default-values.js @@ -1313,3 +1313,31 @@ issue_4485_3: { expect_stdout: true node_version: ">=6" } + +issue_4496: { + options = { + default_values: true, + unused: true, + } + input: { + (function f(a = 0) { + console.log(function(b) { + a && b(); + return a; + }(f)); + })(42); + } + expect: { + (function f(a = 0) { + console.log(function(b) { + a && b(); + return a; + }(f)); + })(42); + } + expect_stdout: [ + "0", + "42", + ] + node_version: ">=6" +} |