@@ -531,44 +531,21 @@ impl<'tcx> EmbargoVisitor<'tcx> {
531531 macro_ev : EffectiveVisibility ,
532532 ) -> bool {
533533 if self . macro_reachable . insert ( ( module_def_id, defining_mod) ) {
534- self . update_macro_reachable_mod ( module_def_id, defining_mod, macro_ev) ;
534+ for child in self . tcx . module_children_local ( module_def_id. to_local_def_id ( ) ) {
535+ if let Res :: Def ( def_kind, def_id) = child. res
536+ && let Some ( def_id) = def_id. as_local ( )
537+ && child. vis . is_accessible_from ( defining_mod, self . tcx )
538+ {
539+ let vis = self . tcx . local_visibility ( def_id) ;
540+ self . update_macro_reachable_def ( def_id, def_kind, vis, defining_mod, macro_ev) ;
541+ }
542+ }
535543 true
536544 } else {
537545 false
538546 }
539547 }
540548
541- fn update_macro_reachable_mod (
542- & mut self ,
543- module_def_id : LocalModDefId ,
544- defining_mod : LocalModDefId ,
545- macro_ev : EffectiveVisibility ,
546- ) {
547- let module = self . tcx . hir ( ) . get_module ( module_def_id) . 0 ;
548- for item_id in module. item_ids {
549- let def_kind = self . tcx . def_kind ( item_id. owner_id ) ;
550- let vis = self . tcx . local_visibility ( item_id. owner_id . def_id ) ;
551- self . update_macro_reachable_def (
552- item_id. owner_id . def_id ,
553- def_kind,
554- vis,
555- defining_mod,
556- macro_ev,
557- ) ;
558- }
559- for child in self . tcx . module_children_local ( module_def_id. to_local_def_id ( ) ) {
560- // FIXME: Use module children for the logic above too.
561- if !child. reexport_chain . is_empty ( )
562- && child. vis . is_accessible_from ( defining_mod, self . tcx )
563- && let Res :: Def ( def_kind, def_id) = child. res
564- && let Some ( def_id) = def_id. as_local ( )
565- {
566- let vis = self . tcx . local_visibility ( def_id) ;
567- self . update_macro_reachable_def ( def_id, def_kind, vis, defining_mod, macro_ev) ;
568- }
569- }
570- }
571-
572549 fn update_macro_reachable_def (
573550 & mut self ,
574551 def_id : LocalDefId ,
0 commit comments