1- use crate :: hir:: { ModuleItems , Owner } ;
1+ use crate :: hir:: ModuleItems ;
22use crate :: middle:: debugger_visualizer:: DebuggerVisualizerFile ;
33use crate :: query:: LocalCrate ;
44use crate :: ty:: TyCtxt ;
@@ -108,7 +108,7 @@ impl<'hir> Iterator for ParentOwnerIterator<'hir> {
108108 if self . current_id . local_id . index ( ) != 0 {
109109 self . current_id . local_id = ItemLocalId :: new ( 0 ) ;
110110 if let Some ( node) = self . map . tcx . hir_owner ( self . current_id . owner ) {
111- return Some ( ( self . current_id . owner , node. node ) ) ;
111+ return Some ( ( self . current_id . owner , node) ) ;
112112 }
113113 }
114114 if self . current_id == CRATE_HIR_ID {
@@ -126,23 +126,23 @@ impl<'hir> Iterator for ParentOwnerIterator<'hir> {
126126
127127 // If this `HirId` doesn't have an entry, skip it and look for its `parent_id`.
128128 if let Some ( node) = self . map . tcx . hir_owner ( self . current_id . owner ) {
129- return Some ( ( self . current_id . owner , node. node ) ) ;
129+ return Some ( ( self . current_id . owner , node) ) ;
130130 }
131131 }
132132 }
133133}
134134
135135impl < ' tcx > TyCtxt < ' tcx > {
136+ #[ inline]
137+ fn hir_owner ( self , owner : OwnerId ) -> Option < OwnerNode < ' tcx > > {
138+ Some ( self . hir_owner_nodes ( owner) . as_owner ( ) ?. node ( ) )
139+ }
140+
136141 /// Retrieves the `hir::Node` corresponding to `id`, returning `None` if cannot be found.
137142 pub fn opt_hir_node ( self , id : HirId ) -> Option < Node < ' tcx > > {
138- if id. local_id == ItemLocalId :: from_u32 ( 0 ) {
139- let owner = self . hir_owner ( id. owner ) ?;
140- Some ( owner. node . into ( ) )
141- } else {
142- let owner = self . hir_owner_nodes ( id. owner ) . as_owner ( ) ?;
143- let node = owner. nodes [ id. local_id ] . as_ref ( ) ?;
144- Some ( node. node )
145- }
143+ let owner = self . hir_owner_nodes ( id. owner ) . as_owner ( ) ?;
144+ let node = owner. nodes [ id. local_id ] . as_ref ( ) ?;
145+ Some ( node. node )
146146 }
147147
148148 /// Retrieves the `hir::Node` corresponding to `id`, returning `None` if cannot be found.
@@ -174,7 +174,7 @@ impl<'hir> Map<'hir> {
174174
175175 #[ inline]
176176 pub fn root_module ( self ) -> & ' hir Mod < ' hir > {
177- match self . tcx . hir_owner ( CRATE_OWNER_ID ) . map ( |o| o . node ) {
177+ match self . tcx . hir_owner ( CRATE_OWNER_ID ) {
178178 Some ( OwnerNode :: Crate ( item) ) => item,
179179 _ => bug ! ( ) ,
180180 }
@@ -242,27 +242,27 @@ impl<'hir> Map<'hir> {
242242
243243 pub fn get_generics ( self , id : LocalDefId ) -> Option < & ' hir Generics < ' hir > > {
244244 let node = self . tcx . hir_owner ( OwnerId { def_id : id } ) ?;
245- node. node . generics ( )
245+ node. generics ( )
246246 }
247247
248248 pub fn owner ( self , id : OwnerId ) -> OwnerNode < ' hir > {
249- self . tcx . hir_owner ( id) . unwrap_or_else ( || bug ! ( "expected owner for {:?}" , id) ) . node
249+ self . tcx . hir_owner ( id) . unwrap_or_else ( || bug ! ( "expected owner for {:?}" , id) )
250250 }
251251
252252 pub fn item ( self , id : ItemId ) -> & ' hir Item < ' hir > {
253- self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . node . expect_item ( )
253+ self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . expect_item ( )
254254 }
255255
256256 pub fn trait_item ( self , id : TraitItemId ) -> & ' hir TraitItem < ' hir > {
257- self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . node . expect_trait_item ( )
257+ self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . expect_trait_item ( )
258258 }
259259
260260 pub fn impl_item ( self , id : ImplItemId ) -> & ' hir ImplItem < ' hir > {
261- self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . node . expect_impl_item ( )
261+ self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . expect_impl_item ( )
262262 }
263263
264264 pub fn foreign_item ( self , id : ForeignItemId ) -> & ' hir ForeignItem < ' hir > {
265- self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . node . expect_foreign_item ( )
265+ self . tcx . hir_owner ( id. owner_id ) . unwrap ( ) . expect_foreign_item ( )
266266 }
267267
268268 pub fn body ( self , id : BodyId ) -> & ' hir Body < ' hir > {
@@ -436,7 +436,7 @@ impl<'hir> Map<'hir> {
436436
437437 pub fn get_module ( self , module : LocalModDefId ) -> ( & ' hir Mod < ' hir > , Span , HirId ) {
438438 let hir_id = HirId :: make_owner ( module. to_local_def_id ( ) ) ;
439- match self . tcx . hir_owner ( hir_id. owner ) . map ( |o| o . node ) {
439+ match self . tcx . hir_owner ( hir_id. owner ) {
440440 Some ( OwnerNode :: Item ( & Item { span, kind : ItemKind :: Mod ( m) , .. } ) ) => ( m, span, hir_id) ,
441441 Some ( OwnerNode :: Crate ( item) ) => ( item, item. spans . inner_span , hir_id) ,
442442 node => panic ! ( "not a module: {node:?}" ) ,
@@ -726,11 +726,10 @@ impl<'hir> Map<'hir> {
726726
727727 pub fn get_foreign_abi ( self , hir_id : HirId ) -> Abi {
728728 let parent = self . get_parent_item ( hir_id) ;
729- if let Some ( node) = self . tcx . hir_owner ( parent) {
730- if let OwnerNode :: Item ( Item { kind : ItemKind :: ForeignMod { abi, .. } , .. } ) = node. node
731- {
732- return * abi;
733- }
729+ if let Some ( node) = self . tcx . hir_owner ( parent)
730+ && let OwnerNode :: Item ( Item { kind : ItemKind :: ForeignMod { abi, .. } , .. } ) = node
731+ {
732+ return * abi;
734733 }
735734 bug ! (
736735 "expected foreign mod or inlined parent, found {}" ,
@@ -742,33 +741,32 @@ impl<'hir> Map<'hir> {
742741 self . tcx
743742 . hir_owner ( OwnerId { def_id } )
744743 . unwrap_or_else ( || bug ! ( "expected owner for {:?}" , def_id) )
745- . node
746744 }
747745
748746 pub fn expect_item ( self , id : LocalDefId ) -> & ' hir Item < ' hir > {
749747 match self . tcx . hir_owner ( OwnerId { def_id : id } ) {
750- Some ( Owner { node : OwnerNode :: Item ( item) , .. } ) => item,
748+ Some ( OwnerNode :: Item ( item) ) => item,
751749 _ => bug ! ( "expected item, found {}" , self . node_to_string( HirId :: make_owner( id) ) ) ,
752750 }
753751 }
754752
755753 pub fn expect_impl_item ( self , id : LocalDefId ) -> & ' hir ImplItem < ' hir > {
756754 match self . tcx . hir_owner ( OwnerId { def_id : id } ) {
757- Some ( Owner { node : OwnerNode :: ImplItem ( item) , .. } ) => item,
755+ Some ( OwnerNode :: ImplItem ( item) ) => item,
758756 _ => bug ! ( "expected impl item, found {}" , self . node_to_string( HirId :: make_owner( id) ) ) ,
759757 }
760758 }
761759
762760 pub fn expect_trait_item ( self , id : LocalDefId ) -> & ' hir TraitItem < ' hir > {
763761 match self . tcx . hir_owner ( OwnerId { def_id : id } ) {
764- Some ( Owner { node : OwnerNode :: TraitItem ( item) , .. } ) => item,
762+ Some ( OwnerNode :: TraitItem ( item) ) => item,
765763 _ => bug ! ( "expected trait item, found {}" , self . node_to_string( HirId :: make_owner( id) ) ) ,
766764 }
767765 }
768766
769767 pub fn get_fn_output ( self , def_id : LocalDefId ) -> Option < & ' hir FnRetTy < ' hir > > {
770768 match self . tcx . hir_owner ( OwnerId { def_id } ) {
771- Some ( Owner { node, .. } ) => node. fn_decl ( ) . map ( |fn_decl| & fn_decl. output ) ,
769+ Some ( node) => node. fn_decl ( ) . map ( |fn_decl| & fn_decl. output ) ,
772770 _ => None ,
773771 }
774772 }
@@ -782,7 +780,7 @@ impl<'hir> Map<'hir> {
782780
783781 pub fn expect_foreign_item ( self , id : OwnerId ) -> & ' hir ForeignItem < ' hir > {
784782 match self . tcx . hir_owner ( id) {
785- Some ( Owner { node : OwnerNode :: ForeignItem ( item) , .. } ) => item,
783+ Some ( OwnerNode :: ForeignItem ( item) ) => item,
786784 _ => {
787785 bug ! (
788786 "expected foreign item, found {}" ,
0 commit comments