From: Alex Lam S.L Date: Thu, 2 Mar 2017 18:39:57 +0000 (+0800) Subject: properly cover all cases of for-in loop variables (#1536) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=70d72ad8065421908ff9a8658539359789c4f460;p=UglifyJS.git properly cover all cases of for-in loop variables (#1536) --- diff --git a/lib/compress.js b/lib/compress.js index d4b10b5d..f67f1d2c 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -243,13 +243,13 @@ merge(Compressor.prototype, { return true; } if (node instanceof AST_ForIn) { - if (node.init instanceof AST_SymbolRef) { - var d = node.init.definition(); - d.references.push(node.init); - d.fixed = false; - } else { - node.init.walk(tw); + var sym = node.init; + if (sym instanceof AST_Var) { + sym = sym.definitions[0].name; } + var d = sym.definition(); + d.references.push(sym); + d.fixed = false; node.object.walk(tw); push(); node.body.walk(tw); diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js index 87b1fc2e..557631bd 100644 --- a/test/compress/reduce_vars.js +++ b/test/compress/reduce_vars.js @@ -563,7 +563,7 @@ inner_var_for: { } } -inner_var_for_in: { +inner_var_for_in_1: { options = { evaluate: true, reduce_vars: true, @@ -590,6 +590,21 @@ inner_var_for_in: { } } +inner_var_for_in_2: { + options = { + evaluate: true, + reduce_vars: true, + } + input: { + for (var long_name in {}) + console.log(long_name); + } + expect: { + for (var long_name in {}) + console.log(long_name); + } +} + issue_1533_1: { options = { collapse_vars: true,