diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-03-23 11:09:19 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-03-23 11:09:19 +0100 |
| commit | 6374ffc5f36da5959d6752e5b15543bb4e00c7a9 (patch) | |
| tree | 70f6a2e16bd4f25b0cfa536ef83934015dec1d68 /src/rustc | |
| parent | cdb93d70a1dc7d966b21b683a24a9c9e9dc521f0 (diff) | |
| download | rust-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.rs | 19 |
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(); |
