@@ -13,7 +13,6 @@ use rustc::session::config::{Sanitizer, self};
1313use rustc_target:: spec:: { PanicStrategy , TargetTriple } ;
1414use rustc:: session:: search_paths:: PathKind ;
1515use rustc:: middle:: cstore:: { CrateSource , ExternCrate , ExternCrateSource , MetadataLoaderDyn } ;
16- use rustc:: util:: nodemap:: FxHashSet ;
1716use rustc:: hir:: map:: Definitions ;
1817use rustc:: hir:: def_id:: LOCAL_CRATE ;
1918
@@ -483,19 +482,13 @@ impl<'a> CrateLoader<'a> {
483482 }
484483 }
485484
486- fn update_extern_crate ( & self ,
487- cnum : CrateNum ,
488- mut extern_crate : ExternCrate ,
489- visited : & mut FxHashSet < ( CrateNum , bool ) > )
490- {
491- if !visited. insert ( ( cnum, extern_crate. is_direct ( ) ) ) { return }
492-
485+ fn update_extern_crate ( & self , cnum : CrateNum , extern_crate : ExternCrate ) {
493486 let cmeta = self . cstore . get_crate_data ( cnum) ;
494487 if cmeta. update_extern_crate ( extern_crate) {
495- // Propagate the extern crate info to dependencies.
496- extern_crate. dependency_of = cnum;
488+ // Propagate the extern crate info to dependencies if it was updated .
489+ let extern_crate = ExternCrate { dependency_of : cnum, ..extern_crate } ;
497490 for & dep_cnum in cmeta. dependencies ( ) . iter ( ) {
498- self . update_extern_crate ( dep_cnum, extern_crate, visited ) ;
491+ self . update_extern_crate ( dep_cnum, extern_crate) ;
499492 }
500493 }
501494 }
@@ -935,7 +928,6 @@ impl<'a> CrateLoader<'a> {
935928 path_len,
936929 dependency_of : LOCAL_CRATE ,
937930 } ,
938- & mut FxHashSet :: default ( ) ,
939931 ) ;
940932 cnum
941933 }
@@ -955,27 +947,12 @@ impl<'a> CrateLoader<'a> {
955947 path_len : usize:: max_value ( ) ,
956948 dependency_of : LOCAL_CRATE ,
957949 } ,
958- & mut FxHashSet :: default ( ) ,
959950 ) ;
960951
961952 cnum
962953 }
963954
964955 pub fn maybe_process_path_extern ( & mut self , name : Symbol , span : Span ) -> Option < CrateNum > {
965- let cnum = self . maybe_resolve_crate ( name, span, DepKind :: Explicit , None ) . ok ( ) ?;
966-
967- self . update_extern_crate (
968- cnum,
969- ExternCrate {
970- src : ExternCrateSource :: Path ,
971- span,
972- // to have the least priority in `update_extern_crate`
973- path_len : usize:: max_value ( ) ,
974- dependency_of : LOCAL_CRATE ,
975- } ,
976- & mut FxHashSet :: default ( ) ,
977- ) ;
978-
979- Some ( cnum)
956+ self . maybe_resolve_crate ( name, span, DepKind :: Explicit , None ) . ok ( )
980957 }
981958}
0 commit comments