@@ -267,19 +267,17 @@ impl<'hir> Map<'hir> {
267
267
268
268
fn find_entry ( & self , id : HirId ) -> Option < Entry < ' hir > > {
269
269
if id. local_id == ItemLocalId :: from_u32 ( 0 ) {
270
- let owner = self . tcx . hir_owner ( id. owner ) ;
271
- owner . map ( |owner| Entry { parent : owner. parent , node : owner. node } )
270
+ let owner = self . tcx . hir_owner ( id. owner ) ? ;
271
+ Some ( Entry { parent : owner. parent , node : owner. node } )
272
272
} else {
273
- let owner = self . tcx . hir_owner_nodes ( id. owner ) ;
274
- owner. and_then ( |owner| {
275
- let node = owner. nodes [ id. local_id ] . as_ref ( ) ;
276
- // FIXME(eddyb) use a single generic type insted of having both
277
- // `Entry` and `ParentedNode`, which are effectively the same.
278
- // Alternatively, rewrite code using `Entry` to use `ParentedNode`.
279
- node. map ( |node| Entry {
280
- parent : HirId { owner : id. owner , local_id : node. parent } ,
281
- node : node. node ,
282
- } )
273
+ let owner = self . tcx . hir_owner_nodes ( id. owner ) ?;
274
+ let node = owner. nodes . get ( id. local_id ) ?. as_ref ( ) ?;
275
+ // FIXME(eddyb) use a single generic type insted of having both
276
+ // `Entry` and `ParentedNode`, which are effectively the same.
277
+ // Alternatively, rewrite code using `Entry` to use `ParentedNode`.
278
+ Some ( Entry {
279
+ parent : HirId { owner : id. owner , local_id : node. parent } ,
280
+ node : node. node ,
283
281
} )
284
282
}
285
283
}
0 commit comments