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