@@ -342,20 +342,25 @@ impl<'hir> Map<'hir> {
342
342
}
343
343
344
344
fn find_entry ( & self , id : HirId ) -> Option < Entry < ' hir > > {
345
- Some ( self . get_entry ( id) )
346
- }
347
-
348
- fn get_entry ( & self , id : HirId ) -> Entry < ' hir > {
349
345
if id. local_id == ItemLocalId :: from_u32_const ( 0 ) {
350
346
let owner = self . tcx . hir_owner ( id. owner_def_id ( ) ) ;
351
- Entry { parent : owner. parent , node : owner. node }
347
+ owner . map ( |owner| Entry { parent : owner. parent , node : owner. node } )
352
348
} else {
353
349
let owner = self . tcx . hir_owner_items ( id. owner_def_id ( ) ) ;
354
- let item = owner. items [ id. local_id ] . as_ref ( ) . unwrap ( ) ;
355
- Entry { parent : HirId { owner : id. owner , local_id : item. parent } , node : item. node }
350
+ owner. and_then ( |owner| {
351
+ let item = owner. items [ id. local_id ] . as_ref ( ) ;
352
+ item. map ( |item| Entry {
353
+ parent : HirId { owner : id. owner , local_id : item. parent } ,
354
+ node : item. node ,
355
+ } )
356
+ } )
356
357
}
357
358
}
358
359
360
+ fn get_entry ( & self , id : HirId ) -> Entry < ' hir > {
361
+ self . find_entry ( id) . unwrap ( )
362
+ }
363
+
359
364
pub fn item ( & self , id : HirId ) -> & ' hir Item < ' hir > {
360
365
match self . find ( id) . unwrap ( ) {
361
366
Node :: Item ( item) => item,
@@ -380,6 +385,7 @@ impl<'hir> Map<'hir> {
380
385
pub fn body ( & self , id : BodyId ) -> & ' hir Body < ' hir > {
381
386
self . tcx
382
387
. hir_owner_items ( DefId :: local ( id. hir_id . owner ) )
388
+ . unwrap ( )
383
389
. bodies
384
390
. get ( & id. hir_id . local_id )
385
391
. unwrap ( )
@@ -541,8 +547,9 @@ impl<'hir> Map<'hir> {
541
547
542
548
/// Retrieves the `Node` corresponding to `id`, returning `None` if cannot be found.
543
549
pub fn find ( & self , hir_id : HirId ) -> Option < Node < ' hir > > {
544
- let node = self . get_entry ( hir_id) . node ;
545
- if let Node :: Crate ( ..) = node { None } else { Some ( node) }
550
+ self . find_entry ( hir_id) . and_then ( |entry| {
551
+ if let Node :: Crate ( ..) = entry. node { None } else { Some ( entry. node ) }
552
+ } )
546
553
}
547
554
548
555
/// Similar to `get_parent`; returns the parent HIR Id, or just `hir_id` if there
0 commit comments