diff options
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | lib/compress.js | 5 | ||||
-rw-r--r-- | test/compress/drop-unused.js | 25 |
3 files changed, 30 insertions, 8 deletions
@@ -391,11 +391,11 @@ to set `true`; it's effectively a shortcut for `foo=true`). - `cascade` -- small optimization for sequences, transform `x, x` into `x` and `x = something(), x` into `x = something()` -- `collapse_vars` -- default `false`. Collapse single-use `var` and `const` - definitions when possible. +- `collapse_vars` -- Collapse single-use `var` and `const` definitions + when possible. -- `reduce_vars` -- default `false`. Improve optimization on variables assigned - with and used as constant values. +- `reduce_vars` -- Improve optimization on variables assigned with and + used as constant values. - `warnings` -- display warnings when dropping unreachable code or unused declarations etc. diff --git a/lib/compress.js b/lib/compress.js index f423fdd4..302f8f56 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1840,6 +1840,7 @@ merge(Compressor.prototype, { } if (drop_vars && node instanceof AST_Definitions && !(tt.parent() instanceof AST_ForIn)) { var def = node.definitions.filter(function(def){ + if (def.value) def.value = def.value.transform(tt); if (def.name.definition().id in in_use_ids) return true; var w = { name : def.name.name, @@ -2611,10 +2612,6 @@ merge(Compressor.prototype, { if (compressor.option("unused") && def.references.length == 1 && compressor.find_parent(AST_Scope) === def.scope) { - if (!compressor.option("keep_fnames") - && exp.name && exp.name.definition() === def) { - exp.name = null; - } self.expression = exp; } } diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js index 20dab3b9..9c960561 100644 --- a/test/compress/drop-unused.js +++ b/test/compress/drop-unused.js @@ -700,3 +700,28 @@ issue_1539: { } } } + +vardef_value: { + options = { + keep_fnames: false, + reduce_vars: true, + unused: true, + } + input: { + function f() { + function g(){ + return x(); + } + var a = g(); + return a(42); + } + } + expect: { + function f() { + var a = function(){ + return x(); + }(); + return a(42); + } + } +} |