@@ -185,22 +185,24 @@ where
185185 }
186186}
187187
188- fn check_well_formed ( tcx : TyCtxt < ' _ > , def_id : hir :: OwnerId ) -> Result < ( ) , ErrorGuaranteed > {
189- let node = tcx. hir_owner_node ( def_id) ;
188+ fn check_well_formed ( tcx : TyCtxt < ' _ > , def_id : LocalDefId ) -> Result < ( ) , ErrorGuaranteed > {
189+ let node = tcx. hir_node_by_def_id ( def_id) ;
190190 let mut res = match node {
191- hir:: OwnerNode :: Crate ( _) => bug ! ( "check_well_formed cannot be applied to the crate root" ) ,
192- hir:: OwnerNode :: Item ( item) => check_item ( tcx, item) ,
193- hir:: OwnerNode :: TraitItem ( item) => check_trait_item ( tcx, item) ,
194- hir:: OwnerNode :: ImplItem ( item) => check_impl_item ( tcx, item) ,
195- hir:: OwnerNode :: ForeignItem ( item) => check_foreign_item ( tcx, item) ,
196- hir:: OwnerNode :: Synthetic => unreachable ! ( ) ,
191+ hir:: Node :: Crate ( _) => bug ! ( "check_well_formed cannot be applied to the crate root" ) ,
192+ hir:: Node :: Item ( item) => check_item ( tcx, item) ,
193+ hir:: Node :: TraitItem ( item) => check_trait_item ( tcx, item) ,
194+ hir:: Node :: ImplItem ( item) => check_impl_item ( tcx, item) ,
195+ hir:: Node :: ForeignItem ( item) => check_foreign_item ( tcx, item) ,
196+ hir:: Node :: OpaqueTy ( _) => Ok ( crate :: check:: check:: check_item_type ( tcx, def_id) ) ,
197+ _ => unreachable ! ( ) ,
197198 } ;
198199
199200 if let Some ( generics) = node. generics ( ) {
200201 for param in generics. params {
201202 res = res. and ( check_param_wf ( tcx, param) ) ;
202203 }
203204 }
205+
204206 res
205207}
206208
@@ -2120,10 +2122,14 @@ impl<'tcx> WfCheckingCtxt<'_, 'tcx> {
21202122
21212123fn check_mod_type_wf ( tcx : TyCtxt < ' _ > , module : LocalModDefId ) -> Result < ( ) , ErrorGuaranteed > {
21222124 let items = tcx. hir_module_items ( module) ;
2123- let mut res = items. par_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id ) ) ;
2124- res = res. and ( items. par_impl_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id ) ) ) ;
2125- res = res. and ( items. par_trait_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id ) ) ) ;
2126- res = res. and ( items. par_foreign_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id ) ) ) ;
2125+ let mut res = items. par_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id . def_id ) ) ;
2126+ res =
2127+ res. and ( items. par_impl_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id . def_id ) ) ) ;
2128+ res =
2129+ res. and ( items. par_trait_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id . def_id ) ) ) ;
2130+ res = res
2131+ . and ( items. par_foreign_items ( |item| tcx. ensure ( ) . check_well_formed ( item. owner_id . def_id ) ) ) ;
2132+ res = res. and ( items. par_opaques ( |item| tcx. ensure ( ) . check_well_formed ( item) ) ) ;
21272133 if module == LocalModDefId :: CRATE_DEF_ID {
21282134 super :: entry:: check_for_entry_fn ( tcx) ;
21292135 }
0 commit comments