[Pkg-javascript-commits] [uglifyjs] 94/228: scan assignment value in drop_unused() (#1578)

Jonas Smedegaard dr at jones.dk
Sat Apr 15 14:25:20 UTC 2017


This is an automated email from the git hooks/post-receive script.

js pushed a commit to branch master
in repository uglifyjs.

commit 711f88dcb49bc0daf0548f3ec240f680e05dfc27
Author: Alex Lam S.L <alexlamsl at gmail.com>
Date:   Wed Mar 8 18:37:32 2017 +0800

    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
---
 README.md                    |  8 ++++----
 lib/compress.js              |  5 +----
 test/compress/drop-unused.js | 25 +++++++++++++++++++++++++
 3 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/README.md b/README.md
index f880fd7..a33e0b3 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 f423fdd..302f8f5 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 20dab3b..9c96056 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);
+        }
+    }
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git



More information about the Pkg-javascript-commits mailing list