aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-03-08 18:37:32 +0800
committerGitHub <noreply@github.com>2017-03-08 18:37:32 +0800
commit711f88dcb49bc0daf0548f3ec240f680e05dfc27 (patch)
treee33629cc9e9ae6a4df611dfc03da41f8cf9742a2
parent344d11d591ca18416ce6fe7444e451609ee14689 (diff)
downloadtracifyjs-711f88dcb49bc0daf0548f3ec240f680e05dfc27.tar.gz
tracifyjs-711f88dcb49bc0daf0548f3ec240f680e05dfc27.zip
scan assignment value in drop_unused() (#1578)
those were not optimised for `unused` before, which made it necessary for `reduce_vars` to have separate steps for `keep_fnames` docs update by @kzc closes #1577
-rw-r--r--README.md8
-rw-r--r--lib/compress.js5
-rw-r--r--test/compress/drop-unused.js25
3 files changed, 30 insertions, 8 deletions
diff --git a/README.md b/README.md
index f880fd7b..a33e0b32 100644
--- a/README.md
+++ b/README.md
@@ -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);
+ }
+ }
+}