changeset 289:befaefdfcd8a

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
author Michael Pavone <pavone@retrodev.com>
date Tue, 22 Jul 2014 23:32:49 -0700
parents a4c2b31acba7
children 38ca63e0a62e
files cbackend.js
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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--) {