@@ -341,20 +341,25 @@ impl<'hir> Map<'hir> {
341341 }
342342
343343 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 > {
348344 if id. local_id == ItemLocalId :: from_u32_const ( 0 ) {
349345 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 } )
351347 } else {
352348 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+ } )
355356 }
356357 }
357358
359+ fn get_entry ( & self , id : HirId ) -> Entry < ' hir > {
360+ self . find_entry ( id) . unwrap ( )
361+ }
362+
358363 pub fn item ( & self , id : HirId ) -> & ' hir Item < ' hir > {
359364 match self . find ( id) . unwrap ( ) {
360365 Node :: Item ( item) => item,
@@ -379,6 +384,7 @@ impl<'hir> Map<'hir> {
379384 pub fn body ( & self , id : BodyId ) -> & ' hir Body < ' hir > {
380385 self . tcx
381386 . hir_owner_items ( DefId :: local ( id. hir_id . owner ) )
387+ . unwrap ( )
382388 . bodies
383389 . get ( & id. hir_id . local_id )
384390 . unwrap ( )
@@ -540,8 +546,9 @@ impl<'hir> Map<'hir> {
540546
541547 /// Retrieves the `Node` corresponding to `id`, returning `None` if cannot be found.
542548 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+ } )
545552 }
546553
547554 /// Similar to `get_parent`; returns the parent HIR Id, or just `hir_id` if there
0 commit comments