[Pkg-javascript-commits] [uglifyjs] 65/228: collapse_vars should not replace constant in for-in init section (#1538)
Jonas Smedegaard
dr at jones.dk
Sat Apr 15 14:25:17 UTC 2017
This is an automated email from the git hooks/post-receive script.
js pushed a commit to branch master
in repository uglifyjs.
commit 4d63d4f5b30d2b46f3b6ed4cfced277f4f8e428f
Author: kzc <kzc at users.noreply.github.com>
Date: Thu Mar 2 14:51:15 2017 -0500
collapse_vars should not replace constant in for-in init section (#1538)
fixes #1537
---
lib/compress.js | 10 +++++++---
test/compress/collapse_vars.js | 14 ++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/lib/compress.js b/lib/compress.js
index f67f1d2..deb55ad 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -480,8 +480,12 @@ merge(Compressor.prototype, {
// Constant single use vars can be replaced in any scope.
if (var_decl.value.is_constant()) {
var ctt = new TreeTransformer(function(node) {
- if (node === ref)
- return replace_var(node, ctt.parent(), true);
+ if (node === ref) {
+ var parent = ctt.parent();
+ if (!(parent instanceof AST_ForIn && parent.init === node)) {
+ return replace_var(node, parent, true);
+ }
+ }
});
stat.transform(ctt);
continue;
@@ -570,7 +574,7 @@ merge(Compressor.prototype, {
// Further optimize statement after substitution.
stat.reset_opt_flags(compressor);
- compressor.warn("Replacing " + (is_constant ? "constant" : "variable") +
+ compressor.warn("Collapsing " + (is_constant ? "constant" : "variable") +
" " + var_name + " [{file}:{line},{col}]", node.start);
CHANGED = true;
return value;
diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js
index 5f63488..82d943f 100644
--- a/test/compress/collapse_vars.js
+++ b/test/compress/collapse_vars.js
@@ -1315,3 +1315,17 @@ collapse_vars_regexp: {
})();
}
}
+
+issue_1537: {
+ options = {
+ collapse_vars: true,
+ }
+ input: {
+ var k = '';
+ for (k in {prop: 'val'}){}
+ }
+ expect: {
+ var k = '';
+ for (k in {prop: 'val'});
+ }
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git
More information about the Pkg-javascript-commits
mailing list