@@ -18,7 +18,7 @@ use rustc::hir::map::Definitions;
18
18
use rustc:: hir:: def_id:: LOCAL_CRATE ;
19
19
20
20
use std:: path:: Path ;
21
- use std:: { cmp , fs } ;
21
+ use std:: fs ;
22
22
23
23
use syntax:: ast;
24
24
use syntax:: attr;
@@ -412,47 +412,6 @@ impl<'a> CrateLoader<'a> {
412
412
}
413
413
}
414
414
415
- fn update_extern_crate ( & self ,
416
- cnum : CrateNum ,
417
- mut extern_crate : ExternCrate ,
418
- visited : & mut FxHashSet < ( CrateNum , bool ) > )
419
- {
420
- if !visited. insert ( ( cnum, extern_crate. is_direct ( ) ) ) { return }
421
-
422
- let cmeta = self . cstore . get_crate_data ( cnum) ;
423
- let mut old_extern_crate = cmeta. extern_crate . borrow_mut ( ) ;
424
-
425
- // Prefer:
426
- // - something over nothing (tuple.0);
427
- // - direct extern crate to indirect (tuple.1);
428
- // - shorter paths to longer (tuple.2).
429
- let new_rank = (
430
- true ,
431
- extern_crate. is_direct ( ) ,
432
- cmp:: Reverse ( extern_crate. path_len ) ,
433
- ) ;
434
- let old_rank = match * old_extern_crate {
435
- None => ( false , false , cmp:: Reverse ( usize:: max_value ( ) ) ) ,
436
- Some ( ref c) => (
437
- true ,
438
- c. is_direct ( ) ,
439
- cmp:: Reverse ( c. path_len ) ,
440
- ) ,
441
- } ;
442
- if old_rank >= new_rank {
443
- return ; // no change needed
444
- }
445
-
446
- * old_extern_crate = Some ( extern_crate) ;
447
- drop ( old_extern_crate) ;
448
-
449
- // Propagate the extern crate info to dependencies.
450
- extern_crate. dependency_of = cnum;
451
- for & dep_cnum in cmeta. dependencies . borrow ( ) . iter ( ) {
452
- self . update_extern_crate ( dep_cnum, extern_crate, visited) ;
453
- }
454
- }
455
-
456
415
// Go through the crate metadata and load any crates that it references
457
416
fn resolve_crate_deps ( & mut self ,
458
417
root : & CratePaths ,
@@ -889,7 +848,9 @@ impl<'a> CrateLoader<'a> {
889
848
890
849
let def_id = definitions. opt_local_def_id ( item. id ) . unwrap ( ) ;
891
850
let path_len = definitions. def_path ( def_id. index ) . data . len ( ) ;
892
- self . update_extern_crate (
851
+
852
+ let cmeta = self . cstore . get_crate_data ( cnum) ;
853
+ cmeta. update_extern_crate (
893
854
cnum,
894
855
ExternCrate {
895
856
src : ExternCrateSource :: Extern ( def_id) ,
@@ -908,7 +869,8 @@ impl<'a> CrateLoader<'a> {
908
869
pub fn process_path_extern ( & mut self , name : Symbol , span : Span ) -> CrateNum {
909
870
let cnum = self . resolve_crate ( name, span, DepKind :: Explicit , None ) ;
910
871
911
- self . update_extern_crate (
872
+ let cmeta = self . cstore . get_crate_data ( cnum) ;
873
+ cmeta. update_extern_crate (
912
874
cnum,
913
875
ExternCrate {
914
876
src : ExternCrateSource :: Path ,
@@ -926,7 +888,8 @@ impl<'a> CrateLoader<'a> {
926
888
pub fn maybe_process_path_extern ( & mut self , name : Symbol , span : Span ) -> Option < CrateNum > {
927
889
let cnum = self . maybe_resolve_crate ( name, span, DepKind :: Explicit , None ) . ok ( ) ?;
928
890
929
- self . update_extern_crate (
891
+ let cmeta = self . cstore . get_crate_data ( cnum) ;
892
+ cmeta. update_extern_crate (
930
893
cnum,
931
894
ExternCrate {
932
895
src : ExternCrateSource :: Path ,
0 commit comments