diff --git a/src/comp/metadata/cstore.rs b/src/comp/metadata/cstore.rs index ca5eb332931..c044f32457d 100644 --- a/src/comp/metadata/cstore.rs +++ b/src/comp/metadata/cstore.rs @@ -20,7 +20,7 @@ export get_used_libraries; export add_used_link_args; export get_used_link_args; export add_use_stmt_cnum; -export get_use_stmt_cnum; +export find_use_stmt_cnum; export get_dep_hashes; export get_path; @@ -131,8 +131,9 @@ fn add_use_stmt_cnum(cstore: cstore, use_id: ast::node_id, p(cstore).use_crate_map.insert(use_id, cnum); } -fn get_use_stmt_cnum(cstore: cstore, use_id: ast::node_id) -> ast::crate_num { - ret p(cstore).use_crate_map.get(use_id); +fn find_use_stmt_cnum(cstore: cstore, + use_id: ast::node_id) -> option { + p(cstore).use_crate_map.find(use_id) } // returns hashes of crates directly used by this crate. Hashes are diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs index c4e1923fc29..7c93f7650f4 100644 --- a/src/comp/middle/resolve.rs +++ b/src/comp/middle/resolve.rs @@ -1285,9 +1285,17 @@ fn lookup_in_mod(e: env, m: def, sp: span, name: ident, ns: namespace, } } -fn found_view_item(e: env, id: node_id) -> def { - let cnum = cstore::get_use_stmt_cnum(e.cstore, id); - ret ast::def_mod({crate: cnum, node: ast::crate_node_id}); +fn found_view_item(e: env, id: node_id) -> option { + alt cstore::find_use_stmt_cnum(e.cstore, id) { + some(cnum) { + some(ast::def_mod({crate: cnum, node: ast::crate_node_id})) + } + none { + // This can happen if we didn't load external crate info. + // Rustdoc depends on this. + none + } + } } fn lookup_import(e: env, defid: def_id, ns: namespace) -> option { @@ -1418,7 +1426,7 @@ fn lookup_in_mie(e: env, mie: mod_index_entry, ns: namespace) -> option { alt mie { mie_view_item(_, id, _) { - if ns == ns_module { ret some(found_view_item(e, id)); } + if ns == ns_module { ret found_view_item(e, id); } } mie_import_ident(id, _) { ret lookup_import(e, local_def(id), ns); } mie_item(item) { ret found_def_item(item, ns); }