aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/js-optimizer.js')
-rw-r--r--tools/js-optimizer.js19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index 086ed30e..e75ff317 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -3550,6 +3550,25 @@ function eliminate(ast, memSafe) {
}
}
}
+ // remove loop vars that are used in the rest of the else
+ for (var i = 0; i < assigns.length; i++) {
+ if (assigns[i][0] === 'stat' && assigns[i][1][0] === 'assign') {
+ var assign = assigns[i][1];
+ if (!(assign[1] === true && assign[2][0] === 'name' && assign[3][0] === 'name') || loopers.indexOf(assign[2][1]) < 0) {
+ // this is not one of the loop assigns
+ traverse(assign, function(node, type) {
+ if (type === 'name') {
+ var index = loopers.indexOf(node[1]);
+ if (index < 0) index = helpers.indexOf(node[1]);
+ if (index >= 0) {
+ loopers.splice(index, 1);
+ helpers.splice(index, 1);
+ }
+ }
+ });
+ }
+ }
+ }
if (loopers.length === 0) return;
for (var l = 0; l < loopers.length; l++) {
var looper = loopers[l];