about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-03-23 11:09:19 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2012-03-23 11:09:19 +0100
commit6374ffc5f36da5959d6752e5b15543bb4e00c7a9 (patch)
tree70f6a2e16bd4f25b0cfa536ef83934015dec1d68 /src/rustc
parentcdb93d70a1dc7d966b21b683a24a9c9e9dc521f0 (diff)
downloadrust-6374ffc5f36da5959d6752e5b15543bb4e00c7a9.tar.gz
rust-6374ffc5f36da5959d6752e5b15543bb4e00c7a9.zip
Kludge in resolve to be able to land builtins
Something strange is happening to hash maps. I'm still investigating but
want to get my snapshot built in the meantime. (Problem only happened on
OS X.)
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/resolve.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/rustc/middle/resolve.rs b/src/rustc/middle/resolve.rs
index 5afebaa699f..5106401b175 100644
--- a/src/rustc/middle/resolve.rs
+++ b/src/rustc/middle/resolve.rs
@@ -353,14 +353,19 @@ fn map_crate(e: @env, c: @ast::crate) {
 
 fn resolve_imports(e: env) {
     e.used_imports.track = true;
-    e.imports.values {|v|
-        alt v {
-          todo(node_id, name, path, span, scopes) {
-            resolve_import(e, local_def(node_id), name, *path, span, scopes);
-          }
-          resolved(_, _, _, _, _, _) | is_glob(_, _, _) { }
-          _ { e.sess.bug("shouldn't see a resolving in resolve_imports"); }
+    loop {
+        let mut done = true;
+        e.imports.values {|v|
+            alt check v {
+              todo(node_id, name, path, span, scopes) {
+                done = false;
+                resolve_import(e, local_def(node_id), name, *path, span,
+                               scopes);
+              }
+              resolved(_, _, _, _, _, _) | is_glob(_, _, _) { }
+            }
         }
+        if done { break; }
     };
     e.used_imports.track = false;
     e.sess.abort_if_errors();