@@ -278,19 +278,18 @@ impl<'hir> Map<'hir> {
278
278
279
279
fn find_entry ( & self , id : HirId ) -> Option < Entry < ' hir > > {
280
280
if id. local_id == ItemLocalId :: from_u32 ( 0 ) {
281
- let owner = self . tcx . hir_owner ( id. owner ) ;
282
- owner . map ( |owner| Entry { parent : owner. parent , node : owner. node } )
281
+ let owner = self . tcx . hir_owner ( id. owner ) ? ;
282
+ Some ( Entry { parent : owner. parent , node : owner. node } )
283
283
} else {
284
- let owner = self . tcx . hir_owner_nodes ( id. owner ) ;
285
- owner. and_then ( |owner| {
286
- let node = owner. nodes [ id. local_id ] . as_ref ( ) ;
287
- // FIXME(eddyb) use a single generic type instead of having both
288
- // `Entry` and `ParentedNode`, which are effectively the same.
289
- // Alternatively, rewrite code using `Entry` to use `ParentedNode`.
290
- node. map ( |node| Entry {
291
- parent : HirId { owner : id. owner , local_id : node. parent } ,
292
- node : node. node ,
293
- } )
284
+ let owner = self . tcx . hir_owner_nodes ( id. owner ) ?;
285
+ let node = owner. nodes . get ( id. local_id ) ?;
286
+ let node = node. as_ref ( ) ?;
287
+ // FIXME(eddyb) use a single generic type instead of having both
288
+ // `Entry` and `ParentedNode`, which are effectively the same.
289
+ // Alternatively, rewrite code using `Entry` to use `ParentedNode`.
290
+ Some ( Entry {
291
+ parent : HirId { owner : id. owner , local_id : node. parent } ,
292
+ node : node. node ,
294
293
} )
295
294
}
296
295
}
0 commit comments