improve `inline` efficiency (#2924)
authorAlex Lam S.L <alexlamsl@gmail.com>
Fri, 16 Feb 2018 18:37:13 +0000 (02:37 +0800)
committerGitHub <noreply@github.com>
Fri, 16 Feb 2018 18:37:13 +0000 (02:37 +0800)
lib/compress.js
test/compress/functions.js
test/mocha/minify.js

index 65895bb..63830d0 100644 (file)
@@ -4487,6 +4487,8 @@ merge(Compressor.prototype, {
                     })) {
                         return false;
                     }
+                } else if (line instanceof AST_EmptyStatement) {
+                    continue;
                 } else if (stat) {
                     return false;
                 } else {
index 2c03455..29c438a 100644 (file)
@@ -292,11 +292,12 @@ issue_2084: {
     }
     expect: {
         var c = 0;
-        !function(c) {
-            c = 1 + c,
+        !function() {
+            var c;
+            c = 1 + (c = -1),
             c = 1 + (c = 0),
             0 !== 23..toString() && (c = 1 + c);
-        }(-1),
+        }(),
         console.log(c);
     }
     expect_stdout: "0"
@@ -1051,11 +1052,9 @@ issue_2616: {
     }
     expect: {
         var c = "FAIL";
-        (function() {
-            !function(NaN) {
-                (true << NaN) - 0/0 || (c = "PASS");
-            }([]);
-        })();
+        !function(NaN) {
+            (true << NaN) - 0/0 || (c = "PASS");
+        }([]);
         console.log(c);
     }
     expect_stdout: "PASS"
@@ -1086,13 +1085,11 @@ issue_2620_1: {
     }
     expect: {
         var c = "FAIL";
-        (function() {
-            (function(a) {
-                if (function(a) {
-                    a && a();
-                }(), a) c = "PASS";
-            })(1);
-        })(),
+        !function(a) {
+            if (function(a) {
+                a && a();
+            }(), a) c = "PASS";
+        }(1),
         console.log(c);
     }
     expect_stdout: "PASS"
@@ -1160,18 +1157,16 @@ issue_2620_3: {
     }
     expect: {
         var c = "FAIL";
-        (function() {
-            (function(a, NaN) {
-                (function() {
-                    switch (a) {
-                      case a:
-                        break;
-                      case c = "PASS", NaN:
-                        break;
-                    }
-                })();
-            })(NaN);
-        })();
+        !function(a, NaN) {
+            (function() {
+                switch (a) {
+                    case a:
+                    break;
+                    case c = "PASS", NaN:
+                    break;
+                }
+            })();
+        }(NaN);
         console.log(c);
     }
     expect_stdout: "PASS"
@@ -1341,11 +1336,9 @@ issue_2630_4: {
     }
     expect: {
         var x = 3, a = 1, b = 2;
-        (function() {
-            (function() {
-                while (--x >= 0 && void (b += ++a));
-            })();
-        })();
+        !function() {
+            while (--x >= 0 && void (b += ++a));
+        }();
         console.log(a);
     }
     expect_stdout: "2"
index 65392ee..1b0052a 100644 (file)
@@ -226,7 +226,7 @@ describe("minify", function() {
                         content: "inline"
                     }
                 });
-                assert.strictEqual(result.code, "var bar=function(){return function(bar){return bar}}();");
+                assert.strictEqual(result.code, "var bar=function(bar){return bar};");
                 assert.strictEqual(warnings.length, 1);
                 assert.strictEqual(warnings[0], "inline source map not found");
             } finally {