@@ -62,27 +62,6 @@ impl<'hir> Crate<'hir> {
6262 ) -> Crate < ' hir > {
6363 Crate { owners, delayed_ids, delayed_resolver, opt_hir_hash }
6464 }
65-
66- /// Serves as an entry point for getting `MaybeOwner`. As owner can either be in
67- /// `owners` of `hir_crate` or it can be delayed AST owner (i.e., delegations)
68- /// we need to firstly check in `hir_crate` and then delayed AST owners.
69- /// This method can be invoked when not all delayed AST owners are lowered.
70- pub fn owner ( & self , tcx : TyCtxt < ' hir > , def_id : LocalDefId ) -> MaybeOwner < ' hir > {
71- // Delayed LocalDefId can be in `self.owners` if there exists non-delayed LocalDefId
72- // which is greater than delayed LocalDefId, we use IndexVec for owners,
73- // so we will call ensure_contains_elem which will grow it.
74- if let Some ( owner) = self . owners . get ( def_id)
75- && ( self . delayed_ids . is_empty ( ) || !matches ! ( owner, MaybeOwner :: Phantom ) )
76- {
77- return * owner;
78- }
79-
80- if self . delayed_ids . contains ( & def_id) {
81- tcx. ensure_done ( ) . lower_delayed_owner ( def_id) ;
82- }
83-
84- tcx. delayed_owner ( def_id)
85- }
8665}
8766
8867impl < Hcx : HashStableContext > HashStable < Hcx > for Crate < ' _ > {
@@ -431,8 +410,7 @@ impl<'tcx> TyCtxt<'tcx> {
431410 HirId {
432411 owner : parent_owner_id,
433412 local_id : self
434- . hir_crate ( ( ) )
435- . owner ( self , parent_owner_id. def_id )
413+ . owner ( parent_owner_id. def_id )
436414 . unwrap ( )
437415 . parenting
438416 . get ( & owner_id. def_id )
@@ -465,19 +443,28 @@ pub fn provide(providers: &mut Providers) {
465443 providers. hir_crate_items = map:: hir_crate_items;
466444 providers. crate_hash = map:: crate_hash;
467445 providers. hir_module_items = map:: hir_module_items;
468- providers. local_def_id_to_hir_id = |tcx, def_id| match tcx. hir_crate ( ( ) ) . owner ( tcx, def_id) {
469- MaybeOwner :: Owner ( _) => HirId :: make_owner ( def_id) ,
470- MaybeOwner :: NonOwner ( hir_id) => hir_id,
471- MaybeOwner :: Phantom => bug ! ( "No HirId for {:?}" , def_id) ,
446+ // Serves as an entry point for getting `MaybeOwner`. As owner can either be in
447+ // `owners` of `hir_crate` or it can be delayed AST owner (i.e., delegations)
448+ // we need to firstly check in `hir_crate` and then delayed AST owners.
449+ // This method can be invoked when not all delayed AST owners are lowered.
450+ providers. owner = |tcx, def_id| {
451+ // Delayed LocalDefId can be in `self.owners` if there exists non-delayed LocalDefId
452+ // which is greater than delayed LocalDefId, we use IndexVec for owners,
453+ // so we will call ensure_contains_elem which will grow it.
454+ let krate = tcx. hir_crate ( ( ) ) ;
455+ if let Some ( owner) = krate. owners . get ( def_id)
456+ && ( krate. delayed_ids . is_empty ( ) || !matches ! ( owner, MaybeOwner :: Phantom ) )
457+ {
458+ return * owner;
459+ }
460+
461+ if krate. delayed_ids . contains ( & def_id) {
462+ tcx. ensure_done ( ) . lower_delayed_owner ( def_id) ;
463+ }
464+
465+ tcx. delayed_owner ( def_id)
472466 } ;
473- providers. opt_hir_owner_nodes =
474- |tcx, id| tcx. hir_crate ( ( ) ) . owner ( tcx, id) . as_owner ( ) . map ( |i| & i. nodes ) ;
475467 providers. hir_owner_parent_q = |tcx, owner_id| tcx. hir_owner_parent_impl ( owner_id) ;
476- providers. hir_attr_map = |tcx, id| {
477- tcx. hir_crate ( ( ) ) . owner ( tcx, id. def_id ) . as_owner ( ) . map_or ( AttributeMap :: EMPTY , |o| & o. attrs )
478- } ;
479- providers. opt_ast_lowering_delayed_lints =
480- |tcx, id| tcx. hir_crate ( ( ) ) . owner ( tcx, id. def_id ) . as_owner ( ) . map ( |o| & o. delayed_lints ) ;
481468 providers. def_span = |tcx, def_id| tcx. hir_span ( tcx. local_def_id_to_hir_id ( def_id) ) ;
482469 providers. def_ident_span = |tcx, def_id| {
483470 let hir_id = tcx. local_def_id_to_hir_id ( def_id) ;
@@ -517,7 +504,4 @@ pub fn provide(providers: &mut Providers) {
517504 |tcx, trait_id| tcx. resolutions ( ( ) ) . trait_impls . get ( & trait_id) . map_or ( & [ ] , |xs| & xs[ ..] ) ;
518505 providers. expn_that_defined =
519506 |tcx, id| tcx. resolutions ( ( ) ) . expn_that_defined . get ( & id) . copied ( ) . unwrap_or ( ExpnId :: root ( ) ) ;
520- providers. in_scope_traits_map = |tcx, id| {
521- tcx. hir_crate ( ( ) ) . owner ( tcx, id. def_id ) . as_owner ( ) . map ( |owner_info| & owner_info. trait_map )
522- } ;
523507}
0 commit comments