@@ -342,20 +342,25 @@ impl<'hir> Map<'hir> {
342342 }
343343
344344 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 > {
349345 if id. local_id == ItemLocalId :: from_u32_const ( 0 ) {
350346 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 } )
352348 } else {
353349 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+ } )
356357 }
357358 }
358359
360+ fn get_entry ( & self , id : HirId ) -> Entry < ' hir > {
361+ self . find_entry ( id) . unwrap ( )
362+ }
363+
359364 pub fn item ( & self , id : HirId ) -> & ' hir Item < ' hir > {
360365 match self . find ( id) . unwrap ( ) {
361366 Node :: Item ( item) => item,
@@ -380,6 +385,7 @@ impl<'hir> Map<'hir> {
380385 pub fn body ( & self , id : BodyId ) -> & ' hir Body < ' hir > {
381386 self . tcx
382387 . hir_owner_items ( DefId :: local ( id. hir_id . owner ) )
388+ . unwrap ( )
383389 . bodies
384390 . get ( & id. hir_id . local_id )
385391 . unwrap ( )
@@ -541,8 +547,9 @@ impl<'hir> Map<'hir> {
541547
542548 /// Retrieves the `Node` corresponding to `id`, returning `None` if cannot be found.
543549 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+ } )
546553 }
547554
548555 /// Similar to `get_parent`; returns the parent HIR Id, or just `hir_id` if there
0 commit comments