From: Alex Lam S.L Date: Thu, 2 Mar 2017 16:56:06 +0000 (+0800) Subject: fix reference marking in for-in loops (#1535) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=fe9227a41bd13a8e58be1e17636a96d09e0fd956;p=UglifyJS.git fix reference marking in for-in loops (#1535) fixes #1533 --- diff --git a/lib/compress.js b/lib/compress.js index 01fdeeae..d4b10b5d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -244,7 +244,11 @@ merge(Compressor.prototype, { } if (node instanceof AST_ForIn) { if (node.init instanceof AST_SymbolRef) { - node.init.definition().fixed = false; + var d = node.init.definition(); + d.references.push(node.init); + d.fixed = false; + } else { + node.init.walk(tw); } node.object.walk(tw); push(); diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js index e38c317b..87b1fc2e 100644 --- a/test/compress/reduce_vars.js +++ b/test/compress/reduce_vars.js @@ -589,3 +589,39 @@ inner_var_for_in: { x(1, b, c, d); } } + +issue_1533_1: { + options = { + collapse_vars: true, + reduce_vars: true, + } + input: { + var id = ""; + for (id in {break: "me"}) + console.log(id); + } + expect: { + var id = ""; + for (id in {break: "me"}) + console.log(id); + } +} + +issue_1533_2: { + options = { + evaluate: true, + reduce_vars: true, + } + input: { + var id = ""; + for (var id in {break: "me"}) + console.log(id); + console.log(id); + } + expect: { + var id = ""; + for (var id in {break: "me"}) + console.log(id); + console.log(id); + } +}