Skip to content

Commit 061bcb2

Browse files
committed
Extract resolve_crate from creader::visit_view_item
1 parent 79ca673 commit 061bcb2

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/comp/metadata/creader.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,7 @@ type env =
5353
fn visit_view_item(env e, &@ast::view_item i) {
5454
alt (i.node) {
5555
case (ast::view_item_use(?ident, ?meta_items, ?id)) {
56-
auto cnum;
57-
if (!e.crate_cache.contains_key(ident)) {
58-
cnum = e.next_crate_num;
59-
load_library_crate(e.sess, i.span, cnum, ident,
60-
meta_items, e.library_search_paths);
61-
e.crate_cache.insert(ident, e.next_crate_num);
62-
e.next_crate_num += 1;
63-
} else { cnum = e.crate_cache.get(ident); }
56+
auto cnum = resolve_crate(e, ident, meta_items, i.span);
6457
cstore::add_use_stmt_cnum(e.sess.get_cstore(), id, cnum);
6558
}
6659
case (_) { }
@@ -242,6 +235,19 @@ fn load_library_crate(&session::session sess, span span, ast::crate_num cnum,
242235
sess.span_fatal(span, #fmt("can't find crate for '%s'", ident));
243236
}
244237

238+
fn resolve_crate(env e, ast::ident ident, (@ast::meta_item)[] metas,
239+
span span) -> ast::crate_num {
240+
if (!e.crate_cache.contains_key(ident)) {
241+
auto cnum = e.next_crate_num;
242+
load_library_crate(e.sess, span, cnum, ident,
243+
metas, e.library_search_paths);
244+
e.crate_cache.insert(ident, e.next_crate_num);
245+
e.next_crate_num += 1;
246+
ret cnum;
247+
} else {
248+
ret e.crate_cache.get(ident);
249+
}
250+
}
245251

246252

247253
// Local Variables:

0 commit comments

Comments
 (0)