@@ -53,14 +53,7 @@ type env =
53
53
fn visit_view_item ( env e, & @ast:: view_item i) {
54
54
alt ( i. node ) {
55
55
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 ) ;
64
57
cstore:: add_use_stmt_cnum ( e. sess . get_cstore ( ) , id, cnum) ;
65
58
}
66
59
case ( _) { }
@@ -242,6 +235,19 @@ fn load_library_crate(&session::session sess, span span, ast::crate_num cnum,
242
235
sess. span_fatal( span, #fmt( "can't find crate for '%s'" , ident) ) ;
243
236
}
244
237
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
+ }
245
251
246
252
247
253
// Local Variables:
0 commit comments