@@ -13,7 +13,6 @@ use rustc::session::config::{Sanitizer, self};
13
13
use rustc_target:: spec:: { PanicStrategy , TargetTriple } ;
14
14
use rustc:: session:: search_paths:: PathKind ;
15
15
use rustc:: middle:: cstore:: { CrateSource , ExternCrate , ExternCrateSource , MetadataLoaderDyn } ;
16
- use rustc:: util:: nodemap:: FxHashSet ;
17
16
use rustc:: hir:: map:: Definitions ;
18
17
use rustc:: hir:: def_id:: LOCAL_CRATE ;
19
18
@@ -483,19 +482,13 @@ impl<'a> CrateLoader<'a> {
483
482
}
484
483
}
485
484
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 ) {
493
486
let cmeta = self . cstore . get_crate_data ( cnum) ;
494
487
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 } ;
497
490
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) ;
499
492
}
500
493
}
501
494
}
@@ -935,7 +928,6 @@ impl<'a> CrateLoader<'a> {
935
928
path_len,
936
929
dependency_of : LOCAL_CRATE ,
937
930
} ,
938
- & mut FxHashSet :: default ( ) ,
939
931
) ;
940
932
cnum
941
933
}
@@ -955,27 +947,12 @@ impl<'a> CrateLoader<'a> {
955
947
path_len : usize:: max_value ( ) ,
956
948
dependency_of : LOCAL_CRATE ,
957
949
} ,
958
- & mut FxHashSet :: default ( ) ,
959
950
) ;
960
951
961
952
cnum
962
953
}
963
954
964
955
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 ( )
980
957
}
981
958
}
0 commit comments