1
- use crate :: hir:: { ModuleItems , Owner } ;
1
+ use crate :: hir:: ModuleItems ;
2
2
use crate :: middle:: debugger_visualizer:: DebuggerVisualizerFile ;
3
3
use crate :: query:: LocalCrate ;
4
4
use crate :: ty:: TyCtxt ;
@@ -108,7 +108,7 @@ impl<'hir> Iterator for ParentOwnerIterator<'hir> {
108
108
if self . current_id . local_id . index ( ) != 0 {
109
109
self . current_id . local_id = ItemLocalId :: new ( 0 ) ;
110
110
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) ) ;
112
112
}
113
113
}
114
114
if self . current_id == CRATE_HIR_ID {
@@ -126,23 +126,23 @@ impl<'hir> Iterator for ParentOwnerIterator<'hir> {
126
126
127
127
// If this `HirId` doesn't have an entry, skip it and look for its `parent_id`.
128
128
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) ) ;
130
130
}
131
131
}
132
132
}
133
133
}
134
134
135
135
impl < ' 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
+
136
141
/// Retrieves the `hir::Node` corresponding to `id`, returning `None` if cannot be found.
137
142
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 )
146
146
}
147
147
148
148
/// Retrieves the `hir::Node` corresponding to `id`, returning `None` if cannot be found.
@@ -174,7 +174,7 @@ impl<'hir> Map<'hir> {
174
174
175
175
#[ inline]
176
176
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 ) {
178
178
Some ( OwnerNode :: Crate ( item) ) => item,
179
179
_ => bug ! ( ) ,
180
180
}
@@ -242,27 +242,27 @@ impl<'hir> Map<'hir> {
242
242
243
243
pub fn get_generics ( self , id : LocalDefId ) -> Option < & ' hir Generics < ' hir > > {
244
244
let node = self . tcx . hir_owner ( OwnerId { def_id : id } ) ?;
245
- node. node . generics ( )
245
+ node. generics ( )
246
246
}
247
247
248
248
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) )
250
250
}
251
251
252
252
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 ( )
254
254
}
255
255
256
256
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 ( )
258
258
}
259
259
260
260
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 ( )
262
262
}
263
263
264
264
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 ( )
266
266
}
267
267
268
268
pub fn body ( self , id : BodyId ) -> & ' hir Body < ' hir > {
@@ -436,7 +436,7 @@ impl<'hir> Map<'hir> {
436
436
437
437
pub fn get_module ( self , module : LocalModDefId ) -> ( & ' hir Mod < ' hir > , Span , HirId ) {
438
438
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 ) {
440
440
Some ( OwnerNode :: Item ( & Item { span, kind : ItemKind :: Mod ( m) , .. } ) ) => ( m, span, hir_id) ,
441
441
Some ( OwnerNode :: Crate ( item) ) => ( item, item. spans . inner_span , hir_id) ,
442
442
node => panic ! ( "not a module: {node:?}" ) ,
@@ -726,11 +726,10 @@ impl<'hir> Map<'hir> {
726
726
727
727
pub fn get_foreign_abi ( self , hir_id : HirId ) -> Abi {
728
728
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;
734
733
}
735
734
bug ! (
736
735
"expected foreign mod or inlined parent, found {}" ,
@@ -742,33 +741,32 @@ impl<'hir> Map<'hir> {
742
741
self . tcx
743
742
. hir_owner ( OwnerId { def_id } )
744
743
. unwrap_or_else ( || bug ! ( "expected owner for {:?}" , def_id) )
745
- . node
746
744
}
747
745
748
746
pub fn expect_item ( self , id : LocalDefId ) -> & ' hir Item < ' hir > {
749
747
match self . tcx . hir_owner ( OwnerId { def_id : id } ) {
750
- Some ( Owner { node : OwnerNode :: Item ( item) , .. } ) => item,
748
+ Some ( OwnerNode :: Item ( item) ) => item,
751
749
_ => bug ! ( "expected item, found {}" , self . node_to_string( HirId :: make_owner( id) ) ) ,
752
750
}
753
751
}
754
752
755
753
pub fn expect_impl_item ( self , id : LocalDefId ) -> & ' hir ImplItem < ' hir > {
756
754
match self . tcx . hir_owner ( OwnerId { def_id : id } ) {
757
- Some ( Owner { node : OwnerNode :: ImplItem ( item) , .. } ) => item,
755
+ Some ( OwnerNode :: ImplItem ( item) ) => item,
758
756
_ => bug ! ( "expected impl item, found {}" , self . node_to_string( HirId :: make_owner( id) ) ) ,
759
757
}
760
758
}
761
759
762
760
pub fn expect_trait_item ( self , id : LocalDefId ) -> & ' hir TraitItem < ' hir > {
763
761
match self . tcx . hir_owner ( OwnerId { def_id : id } ) {
764
- Some ( Owner { node : OwnerNode :: TraitItem ( item) , .. } ) => item,
762
+ Some ( OwnerNode :: TraitItem ( item) ) => item,
765
763
_ => bug ! ( "expected trait item, found {}" , self . node_to_string( HirId :: make_owner( id) ) ) ,
766
764
}
767
765
}
768
766
769
767
pub fn get_fn_output ( self , def_id : LocalDefId ) -> Option < & ' hir FnRetTy < ' hir > > {
770
768
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 ) ,
772
770
_ => None ,
773
771
}
774
772
}
@@ -782,7 +780,7 @@ impl<'hir> Map<'hir> {
782
780
783
781
pub fn expect_foreign_item ( self , id : OwnerId ) -> & ' hir ForeignItem < ' hir > {
784
782
match self . tcx . hir_owner ( id) {
785
- Some ( Owner { node : OwnerNode :: ForeignItem ( item) , .. } ) => item,
783
+ Some ( OwnerNode :: ForeignItem ( item) ) => item,
786
784
_ => {
787
785
bug ! (
788
786
"expected foreign item, found {}" ,
0 commit comments