@@ -52,7 +52,7 @@ use rustc_hir::definitions::{DefKey, DefPathData, Definitions};
5252use rustc_hir:: TraitCandidate ;
5353use rustc_index:: vec:: IndexVec ;
5454use rustc_metadata:: creader:: { CStore , CrateLoader } ;
55- use rustc_middle:: metadata:: ModChild ;
55+ use rustc_middle:: metadata:: { ModChild , Reexport } ;
5656use rustc_middle:: middle:: privacy:: AccessLevels ;
5757use rustc_middle:: span_bug;
5858use rustc_middle:: ty:: query:: Providers ;
@@ -939,7 +939,7 @@ pub struct Resolver<'a> {
939939
940940 /// `CrateNum` resolutions of `extern crate` items.
941941 extern_crate_map : FxHashMap < LocalDefId , CrateNum > ,
942- reexport_map : FxHashMap < LocalDefId , Vec < ModChild > > ,
942+ reexport_map : FxHashMap < LocalDefId , Vec < Reexport > > ,
943943 trait_map : NodeMap < Vec < TraitCandidate > > ,
944944
945945 /// A map from nodes to anonymous modules.
@@ -3421,7 +3421,13 @@ impl<'a> Resolver<'a> {
34213421 /// For local modules returns only reexports, for external modules returns all children.
34223422 pub fn module_children_or_reexports ( & self , def_id : DefId ) -> Vec < ModChild > {
34233423 if let Some ( def_id) = def_id. as_local ( ) {
3424- self . reexport_map . get ( & def_id) . cloned ( ) . unwrap_or_default ( )
3424+ self . reexport_map
3425+ . get ( & def_id)
3426+ . iter ( )
3427+ . copied ( )
3428+ . flatten ( )
3429+ . map ( |reexport| reexport. mod_child ( ) )
3430+ . collect ( )
34253431 } else {
34263432 self . cstore ( ) . module_children_untracked ( def_id, self . session )
34273433 }
0 commit comments