[Pkg-javascript-commits] [uglifyjs] 67/77: Keep unused function arguments by default

Jonas Smedegaard dr at jones.dk
Tue May 19 00:02:34 UTC 2015


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

js pushed a commit to tag v2.4.18
in repository uglifyjs.

commit ecfd881ac6f4f62b5e8a15664fccc86271c0d003
Author: Mihai Bazon <mihai.bazon at gmail.com>
Date:   Fri Mar 20 10:28:51 2015 +0200

    Keep unused function arguments by default
    
    Discarding unused function arguments affects function.length, which can lead
    to some hard to debug issues.  This optimization is now done only in "unsafe
    mode".
    
    Fix #121
---
 README.md                    | 5 +++--
 lib/compress.js              | 2 +-
 test/compress/drop-unused.js | 8 ++++----
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index 2bb2138..a84fce8 100644
--- a/README.md
+++ b/README.md
@@ -272,14 +272,15 @@ contrived cases, but should be fine for most code.  You might want to try it
 on your own code, it should reduce the minified size.  Here's what happens
 when this flag is on:
 
-- `new Array(1, 2, 3)` or `Array(1, 2, 3)` → `[1, 2, 3 ]`
+- `new Array(1, 2, 3)` or `Array(1, 2, 3)` → `[ 1, 2, 3 ]`
 - `new Object()` → `{}`
 - `String(exp)` or `exp.toString()` → `"" + exp`
 - `new Object/RegExp/Function/Error/Array (...)` → we discard the `new`
 - `typeof foo == "undefined"` → `foo === void 0`
 - `void 0` → `undefined` (if there is a variable named "undefined" in
   scope; we do it because the variable name will be mangled, typically
-  reduced to a single character).
+  reduced to a single character)
+- discards unused function arguments (affects `function.length`)
 
 ### Conditional compilation
 
diff --git a/lib/compress.js b/lib/compress.js
index b77b5ff..4636716 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -1086,7 +1086,7 @@ merge(Compressor.prototype, {
             var tt = new TreeTransformer(
                 function before(node, descend, in_list) {
                     if (node instanceof AST_Lambda && !(node instanceof AST_Accessor)) {
-                        if (!compressor.option("keep_fargs")) {
+                        if (compressor.option("unsafe") && !compressor.option("keep_fargs")) {
                             for (var a = node.argnames, i = a.length; --i >= 0;) {
                                 var sym = a[i];
                                 if (sym.unreferenced()) {
diff --git a/test/compress/drop-unused.js b/test/compress/drop-unused.js
index de4b222..c1cf5c3 100644
--- a/test/compress/drop-unused.js
+++ b/test/compress/drop-unused.js
@@ -1,5 +1,5 @@
 unused_funarg_1: {
-    options = { unused: true };
+    options = { unused: true, unsafe: true };
     input: {
         function f(a, b, c, d, e) {
             return a + b;
@@ -13,7 +13,7 @@ unused_funarg_1: {
 }
 
 unused_funarg_2: {
-    options = { unused: true };
+    options = { unused: true, unsafe: true };
     input: {
         function f(a, b, c, d, e) {
             return a + c;
@@ -165,7 +165,7 @@ used_var_in_catch: {
 }
 
 keep_fnames: {
-    options = { unused: true, keep_fnames: true };
+    options = { unused: true, keep_fnames: true, unsafe: true };
     input: {
         function foo() {
             return function bar(baz) {};
@@ -176,4 +176,4 @@ keep_fnames: {
             return function bar() {};
         }
     }
-}
\ No newline at end of file
+}

-- 
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