# HG changeset patch # User Michael Pavone # Date 1406097169 25200 # Node ID befaefdfcd8aafb89323efb61f4309ea20463272 # Parent a4c2b31acba7b0fb4176596e1d8c126331e39ec7 Make sure that true and false modules are initialized before anything else and that the list module is initialized before any modules besides true and false diff -r a4c2b31acba7 -r befaefdfcd8a cbackend.js --- a/cbackend.js Tue Jul 22 21:31:41 2014 -0700 +++ b/cbackend.js Tue Jul 22 23:32:49 2014 -0700 @@ -1121,13 +1121,16 @@ function processUsedToplevel(toplevel) { - var alwaysused = ['true', 'false', 'list']; + var alwaysused = ['list', 'true', 'false']; var ret = ''; var modulenum = 0; var visited = {}; + var newused = []; for (var i in alwaysused) { - toplevel.used[alwaysused[i]] = true; + delete toplevel.used[alwaysused[i]]; + visited[alwaysused[i]] = true; } + var addedAlways = false; var newused = Object.keys(toplevel.used); var allused = newused; while (newused.length) { @@ -1145,6 +1148,14 @@ allused.push(symbol); } } + if (!newused.length && !addedAlways) { + addedAlways = true; + for (var i in alwaysused) { + toplevel.used[alwaysused[i]] = true; + newused.push(alwaysused[i]); + allused.push(alwaysused[i]); + } + } } for (var i = allused.length-1; i >= 0; i--) {