aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/js-optimizer.js10
-rw-r--r--tools/test-js-optimizer-output.js3
-rw-r--r--tools/test-js-optimizer.js3
3 files changed, 9 insertions, 7 deletions
diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js
index aa4ba39b..372cbea3 100644
--- a/tools/js-optimizer.js
+++ b/tools/js-optimizer.js
@@ -79,14 +79,14 @@ function traverseWithVariables(ast, callback) {
}
}
}, function(node, type, stack) {
- if (type in FUNCTION) {
+ if (type == 'toplevel' || type in FUNCTION) {
// We know all of the variables that are seen here, proceed to do relevant replacements
var allVars = stack.map(function(item) { return item ? item.vars : [] }).reduce(concatenator, []); // FIXME dictionary for speed?
- traverse(node, function(node, type, stack) {
+ traverse(node, function(node2, type2, stack2) {
// Be careful not to look into our inner functions. They have already been processed.
- if (sum(stack) > 1) return;
- if (type in FUNCTION) stack.push(1);
- return callback(node, type, allVars);
+ if (sum(stack2) > 1 || (type == 'toplevel' && sum(stack2) == 1)) return;
+ if (type2 in FUNCTION) stack2.push(1);
+ return callback(node2, type2, allVars);
}, null, []);
}
}, []);
diff --git a/tools/test-js-optimizer-output.js b/tools/test-js-optimizer-output.js
index a53ca461..a6e790c8 100644
--- a/tools/test-js-optimizer-output.js
+++ b/tools/test-js-optimizer-output.js
@@ -1,8 +1,9 @@
var c;
var b = 5;
var s3 = !0;
+var block = [ void 0 ];
function abc() {
- var cheez = void 0;
+ var cheez = [ void 0 ];
var fleefl;
cheez = 10;
fleefl = void 0;
diff --git a/tools/test-js-optimizer.js b/tools/test-js-optimizer.js
index f2674b31..042f4cf9 100644
--- a/tools/test-js-optimizer.js
+++ b/tools/test-js-optimizer.js
@@ -1,8 +1,9 @@
var c;
var b = 5, x = void 0, y = null, t = !0;
var s = !1, s2 = !1, s3 = !0;
+var block = [x];
function abc() {
- var cheez = x;
+ var cheez = [x];
var fleefl;
cheez = 10;
fleefl = x;