Keep const in own scope while compressing
authorAnthony Van de Gejuchte <anthonyvdgent@gmail.com>
Thu, 14 Jul 2016 16:43:50 +0000 (18:43 +0200)
committerRichard van Velzen <rvanvelzen@experty.com>
Fri, 15 Jul 2016 11:20:52 +0000 (13:20 +0200)
- Fixes #1205
- Fix provided by @kzc

lib/compress.js
test/compress/loops.js

index f0f3d09..fd839fa 100644 (file)
@@ -810,7 +810,7 @@ merge(Compressor.prototype, {
                     CHANGED = true;
                 }
                 else if (stat instanceof AST_For
-                         && prev instanceof AST_Definitions
+                         && prev instanceof AST_Var
                          && (!stat.init || stat.init.TYPE == prev.TYPE)) {
                     CHANGED = true;
                     a.pop();
index 91aa1c5..78f618a 100644 (file)
@@ -144,4 +144,46 @@ parse_do_while_without_semicolon: {
     expect: {
         do x(); while (false);y();
     }
-}
\ No newline at end of file
+}
+
+
+keep_collapse_const_in_own_block_scope: {
+    options = {
+        join_vars: true,
+        loops: true
+    }
+    input: {
+        var i=2;
+        const c=5;
+        while(i--)
+            console.log(i);
+        console.log(c);
+    }
+    expect: {
+        var i=2;
+        const c=5;
+        for(;i--;)
+            console.log(i);
+        console.log(c);
+    }
+}
+
+keep_collapse_const_in_own_block_scope_2: {
+    options = {
+        join_vars: true,
+        loops: true
+    }
+    input: {
+        const c=5;
+        var i=2; // Moves to loop, while it did not in previous test
+        while(i--)
+            console.log(i);
+        console.log(c);
+    }
+    expect: {
+        const c=5;
+        for(var i=2;i--;)
+            console.log(i);
+        console.log(c);
+    }
+}