[Pkg-javascript-commits] [uglifyjs] 351/491: avoid `inline` of function with special argument names (#2625)

Jonas Smedegaard dr at jones.dk
Wed Feb 14 19:51:52 UTC 2018


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

js pushed a commit to annotated tag debian/3.3.10-1
in repository uglifyjs.

commit fac003c64f5512692e67e41a55b21c74a32a3c6b
Author: Alex Lam S.L <alexlamsl at gmail.com>
Date:   Wed Dec 20 02:48:04 2017 +0800

    avoid `inline` of function with special argument names (#2625)
---
 lib/compress.js            |  2 +
 test/compress/functions.js | 94 ++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 92 insertions(+), 4 deletions(-)

diff --git a/lib/compress.js b/lib/compress.js
index c95e4f8..5aacfd7 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -858,6 +858,7 @@ merge(Compressor.prototype, {
             || compressor.option("unsafe") && global_names(this.name);
     });
 
+    var identifier_atom = makePredicate("Infinity NaN undefined");
     function is_identifier_atom(node) {
         return node instanceof AST_Infinity
             || node instanceof AST_NaN
@@ -4015,6 +4016,7 @@ merge(Compressor.prototype, {
                 return arg.__unused
                     || safe_to_inject
                         && !catches[arg.name]
+                        && !identifier_atom(arg.name)
                         && !scope.var_names()[arg.name];
             }) && scope;
         }
diff --git a/test/compress/functions.js b/test/compress/functions.js
index bd65a11..4c22652 100644
--- a/test/compress/functions.js
+++ b/test/compress/functions.js
@@ -1092,10 +1092,9 @@ issue_2616: {
     expect: {
         var c = "FAIL";
         (function() {
-            (function() {
-                NaN = [], (true << NaN) - 0/0 || (c = "PASS");
-                var NaN;
-            })();
+            !function(NaN) {
+                (true << NaN) - 0/0 || (c = "PASS");
+            }([]);
         })();
         console.log(c);
     }
@@ -1172,3 +1171,90 @@ issue_2620_2: {
     }
     expect_stdout: "PASS"
 }
+
+issue_2620_3: {
+    options = {
+        evaluate: true,
+        inline: true,
+        reduce_vars: true,
+        side_effects: true,
+        unused: true,
+    }
+    input: {
+        var c = "FAIL";
+        (function() {
+            function f(a, NaN) {
+                function g() {
+                    switch (a) {
+                      case a:
+                        break;
+                      case c = "PASS", NaN:
+                        break;
+                    }
+                }
+                g();
+            }
+            f(0/0);
+        })();
+        console.log(c);
+    }
+    expect: {
+        var c = "FAIL";
+        (function() {
+            (function(a, NaN) {
+                (function() {
+                    switch (a) {
+                      case a:
+                        break;
+                      case c = "PASS", NaN:
+                        break;
+                    }
+                })();
+            })(NaN);
+        })();
+        console.log(c);
+    }
+    expect_stdout: "PASS"
+}
+
+issue_2620_4: {
+    rename = true,
+    options = {
+        evaluate: true,
+        dead_code: true,
+        inline: true,
+        passes: 2,
+        reduce_vars: true,
+        side_effects: true,
+        switches: true,
+        unused: true,
+    }
+    input: {
+        var c = "FAIL";
+        (function() {
+            function f(a, NaN) {
+                function g() {
+                    switch (a) {
+                      case a:
+                        break;
+                      case c = "PASS", NaN:
+                        break;
+                    }
+                }
+                g();
+            }
+            f(0/0);
+        })();
+        console.log(c);
+    }
+    expect: {
+        var c = "FAIL";
+        !function() {
+            switch (NaN) {
+              case void (c = "PASS"):
+            }
+        }();
+        console.log(c);
+    }
+    expect_stdout: "PASS"
+}

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