Skip to content

Commit d4e49f8

Browse files
committed
---
yaml --- r: 3746 b: refs/heads/master c: 061bcb2 h: refs/heads/master v: v3
1 parent 525f2c1 commit d4e49f8

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 79ca673af79aecc3c63334dee593ded838007e11
2+
refs/heads/master: 061bcb2e42537c598c7b6d2b5c54c60d390334eb

trunk/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)