diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/js-optimizer.js | 10 | ||||
-rw-r--r-- | tools/test-js-optimizer-output.js | 3 | ||||
-rw-r--r-- | tools/test-js-optimizer.js | 3 |
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; |