@@ -181,14 +181,18 @@ pub fn provide(providers: &mut Providers) {
181181 providers. hir_crate_items = map:: hir_crate_items;
182182 providers. crate_hash = map:: crate_hash;
183183 providers. hir_module_items = map:: hir_module_items;
184- providers. hir_owner =
185- |tcx, def_id| tcx. hir_crate ( ( ) ) . owners . get ( def_id) . copied ( ) . unwrap_or ( MaybeOwner :: Phantom ) ;
186- providers. local_def_id_to_hir_id = |tcx, def_id| match tcx. hir_owner ( def_id) {
187- MaybeOwner :: Owner ( _) => HirId :: make_owner ( def_id) ,
188- MaybeOwner :: NonOwner ( hir_id) => hir_id,
189- MaybeOwner :: Phantom => bug ! ( "No HirId for {:?}" , def_id) ,
184+ providers. local_def_id_to_hir_id = |tcx, def_id| {
185+ tcx. ensure_ok ( ) . hir_crate ( ( ) ) ;
186+ match tcx. hir_owner ( def_id) {
187+ MaybeOwner :: Owner ( _) => HirId :: make_owner ( def_id) ,
188+ MaybeOwner :: NonOwner ( hir_id) => hir_id,
189+ MaybeOwner :: Phantom => bug ! ( "No HirId for {:?}" , def_id) ,
190+ }
191+ } ;
192+ providers. opt_hir_owner_nodes = |tcx, id| {
193+ tcx. ensure_ok ( ) . hir_crate ( ( ) ) ;
194+ tcx. hir_owner ( id) . as_owner ( ) . map ( |i| & i. nodes )
190195 } ;
191- providers. opt_hir_owner_nodes = |tcx, id| tcx. hir_owner ( id) . as_owner ( ) . map ( |i| & i. nodes ) ;
192196 providers. hir_owner_parent = |tcx, owner_id| {
193197 tcx. opt_local_parent ( owner_id. def_id ) . map_or ( CRATE_HIR_ID , |parent_def_id| {
194198 let parent_owner_id = tcx. local_def_id_to_hir_id ( parent_def_id) . owner ;
@@ -204,8 +208,10 @@ pub fn provide(providers: &mut Providers) {
204208 }
205209 } )
206210 } ;
207- providers. hir_attr_map =
208- |tcx, id| tcx. hir_owner ( id. def_id ) . as_owner ( ) . map_or ( AttributeMap :: EMPTY , |o| & o. attrs ) ;
211+ providers. hir_attr_map = |tcx, id| {
212+ tcx. ensure_ok ( ) . hir_crate ( ( ) ) ;
213+ tcx. hir_owner ( id. def_id ) . as_owner ( ) . map_or ( AttributeMap :: EMPTY , |o| & o. attrs )
214+ } ;
209215 providers. def_span = |tcx, def_id| tcx. hir_span ( tcx. local_def_id_to_hir_id ( def_id) ) ;
210216 providers. def_ident_span = |tcx, def_id| {
211217 let hir_id = tcx. local_def_id_to_hir_id ( def_id) ;
0 commit comments