From: Anthony Van de Gejuchte Date: Thu, 14 Jul 2016 16:43:50 +0000 (+0200) Subject: Keep const in own scope while compressing X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=7eb52d2837c9d77a389457ae84bfddd28f86cf27;p=UglifyJS.git Keep const in own scope while compressing - Fixes #1205 - Fix provided by @kzc --- diff --git a/lib/compress.js b/lib/compress.js index f0f3d09b..fd839fa1 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -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(); diff --git a/test/compress/loops.js b/test/compress/loops.js index 91aa1c5f..78f618aa 100644 --- a/test/compress/loops.js +++ b/test/compress/loops.js @@ -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); + } +}