improve exceptional flow compression by `collapse_vars` (#2880)
authorAlex Lam S.L <alexlamsl@gmail.com>
Sat, 3 Feb 2018 20:18:22 +0000 (04:18 +0800)
committerGitHub <noreply@github.com>
Sat, 3 Feb 2018 20:18:22 +0000 (04:18 +0800)
lib/compress.js
test/compress/collapse_vars.js

index f9cd7a4..321ee5f 100644 (file)
@@ -1408,22 +1408,15 @@ merge(Compressor.prototype, {
             }
 
             function side_effects_external(node, lhs) {
-                if (node instanceof AST_Assign) {
-                    return side_effects_external(node.left, true)
-                        || side_effects_external(node.right);
-                }
-                if (node instanceof AST_Definitions) return false;
+                if (node instanceof AST_Assign) return side_effects_external(node.left, true);
                 if (node instanceof AST_Unary) return side_effects_external(node.expression, true);
                 if (node instanceof AST_VarDef) return node.value && side_effects_external(node.value);
                 if (lhs) {
                     if (node instanceof AST_Dot) return side_effects_external(node.expression, true);
-                    if (node instanceof AST_Sub) {
-                        return side_effects_external(node.expression, true)
-                            || side_effects_external(node.property);
-                    }
+                    if (node instanceof AST_Sub) return side_effects_external(node.expression, true);
                     if (node instanceof AST_SymbolRef) return node.definition().scope !== scope;
                 }
-                return node.has_side_effects(compressor);
+                return false;
             }
         }
 
index 4191de8..19db605 100644 (file)
@@ -4281,19 +4281,16 @@ cond_branch_1: {
     }
     expect: {
         function f1(b, c) {
-            var log = console.log;
             if (b) b++;
-            log(++c, b);
+            (0, console.log)(++c, b);
         }
         function f2(b, c) {
-            var log = console.log;
             b && b++,
-            log(++c, b);
+            (0, console.log)(++c, b);
         }
         function f3(b, c) {
-            var log = console.log;
             b ? b++ : b--,
-            log(++c, b);
+            (0, console.log)(++c, b);
         }
         f1(1, 2),
         f2(3, 4),
@@ -4337,22 +4334,19 @@ cond_branch_2: {
     }
     expect: {
         function f1(b, c) {
-            var log = console.log;
             var a = ++c;
             if (b) b += a;
-            log(a, b);
+            (0, console.log)(a, b);
         }
         function f2(b, c) {
-            var log = console.log;
             var a = ++c;
             b && (b += a),
-            log(a, b);
+            (0, console.log)(a, b);
         }
         function f3(b, c) {
-            var log = console.log;
             var a = ++c;
             b ? b += a : b--,
-            log(a, b);
+            (0, console.log)(a, b);
         }
         f1(1, 2),
         f2(3, 4),