diff options
-rw-r--r-- | lib/compress.js | 14 | ||||
-rw-r--r-- | test/compress/evaluate.js | 23 |
2 files changed, 37 insertions, 0 deletions
diff --git a/lib/compress.js b/lib/compress.js index 1d4e719a..ddf2b10d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2481,6 +2481,20 @@ merge(Compressor.prototype, { }); OPT(AST_Call, function(self, compressor){ + if (compressor.option("unused") + && self.expression instanceof AST_Function + && !self.expression.uses_arguments + && !self.expression.uses_eval + && self.args.length > self.expression.argnames.length) { + var end = self.expression.argnames.length; + for (var i = end, len = self.args.length; i < len; i++) { + var node = self.args[i].drop_side_effect_free(compressor); + if (node) { + self.args[end++] = node; + } + } + self.args.length = end; + } if (compressor.option("unsafe")) { var exp = self.expression; if (exp instanceof AST_SymbolRef && exp.undeclared()) { diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js index f84436df..26b6e489 100644 --- a/test/compress/evaluate.js +++ b/test/compress/evaluate.js @@ -646,6 +646,29 @@ call_args: { } } +call_args_drop_param: { + options = { + evaluate: true, + keep_fargs: false, + reduce_vars: true, + unused: true, + } + input: { + const a = 1; + console.log(a); + +function(a) { + return a; + }(a, b); + } + expect: { + const a = 1; + console.log(1); + +function() { + return 1; + }(b); + } +} + in_boolean_context: { options = { booleans: true, |