@@ -18,7 +18,7 @@ use rustc::hir::map::Definitions;
1818use rustc:: hir:: def_id:: LOCAL_CRATE ;
1919
2020use std:: path:: Path ;
21- use std:: { cmp , fs } ;
21+ use std:: fs ;
2222
2323use syntax:: ast;
2424use syntax:: attr;
@@ -412,47 +412,6 @@ impl<'a> CrateLoader<'a> {
412412 }
413413 }
414414
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-
456415 // Go through the crate metadata and load any crates that it references
457416 fn resolve_crate_deps ( & mut self ,
458417 root : & CratePaths ,
@@ -889,7 +848,9 @@ impl<'a> CrateLoader<'a> {
889848
890849 let def_id = definitions. opt_local_def_id ( item. id ) . unwrap ( ) ;
891850 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 (
893854 cnum,
894855 ExternCrate {
895856 src : ExternCrateSource :: Extern ( def_id) ,
@@ -908,7 +869,8 @@ impl<'a> CrateLoader<'a> {
908869 pub fn process_path_extern ( & mut self , name : Symbol , span : Span ) -> CrateNum {
909870 let cnum = self . resolve_crate ( name, span, DepKind :: Explicit , None ) ;
910871
911- self . update_extern_crate (
872+ let cmeta = self . cstore . get_crate_data ( cnum) ;
873+ cmeta. update_extern_crate (
912874 cnum,
913875 ExternCrate {
914876 src : ExternCrateSource :: Path ,
@@ -926,7 +888,8 @@ impl<'a> CrateLoader<'a> {
926888 pub fn maybe_process_path_extern ( & mut self , name : Symbol , span : Span ) -> Option < CrateNum > {
927889 let cnum = self . maybe_resolve_crate ( name, span, DepKind :: Explicit , None ) . ok ( ) ?;
928890
929- self . update_extern_crate (
891+ let cmeta = self . cstore . get_crate_data ( cnum) ;
892+ cmeta. update_extern_crate (
930893 cnum,
931894 ExternCrate {
932895 src : ExternCrateSource :: Path ,
0 commit comments