@@ -760,47 +760,40 @@ impl<'ast> Map<'ast> {
760760 }
761761 }
762762
763- pub fn opt_span ( & self , id : NodeId ) -> Option < Span > {
764- let sp = match self . find ( id) {
765- Some ( NodeItem ( item) ) => item. span ,
766- Some ( NodeForeignItem ( foreign_item) ) => foreign_item. span ,
767- Some ( NodeTraitItem ( trait_method) ) => trait_method. span ,
768- Some ( NodeImplItem ( ref impl_item) ) => impl_item. span ,
769- Some ( NodeVariant ( variant) ) => variant. span ,
770- Some ( NodeField ( field) ) => field. span ,
771- Some ( NodeExpr ( expr) ) => expr. span ,
772- Some ( NodeStmt ( stmt) ) => stmt. span ,
773- Some ( NodeTy ( ty) ) => ty. span ,
774- Some ( NodeTraitRef ( tr) ) => tr. path . span ,
775- Some ( NodeLocal ( pat) ) => pat. span ,
776- Some ( NodePat ( pat) ) => pat. span ,
777- Some ( NodeBlock ( block) ) => block. span ,
778- Some ( NodeStructCtor ( _) ) => self . expect_item ( self . get_parent ( id) ) . span ,
779- Some ( NodeTyParam ( ty_param) ) => ty_param. span ,
780- Some ( NodeVisibility ( & Visibility :: Restricted { ref path, .. } ) ) => path. span ,
781- _ => return None ,
782- } ;
783- Some ( sp)
784- }
785-
786763 pub fn span ( & self , id : NodeId ) -> Span {
787764 self . read ( id) ; // reveals span from node
788- self . opt_span ( id)
789- . unwrap_or_else ( || bug ! ( "AstMap.span: could not find span for id {:?}" , id) )
765+ match self . find_entry ( id) {
766+ Some ( EntryItem ( _, item) ) => item. span ,
767+ Some ( EntryForeignItem ( _, foreign_item) ) => foreign_item. span ,
768+ Some ( EntryTraitItem ( _, trait_method) ) => trait_method. span ,
769+ Some ( EntryImplItem ( _, impl_item) ) => impl_item. span ,
770+ Some ( EntryVariant ( _, variant) ) => variant. span ,
771+ Some ( EntryField ( _, field) ) => field. span ,
772+ Some ( EntryExpr ( _, expr) ) => expr. span ,
773+ Some ( EntryStmt ( _, stmt) ) => stmt. span ,
774+ Some ( EntryTy ( _, ty) ) => ty. span ,
775+ Some ( EntryTraitRef ( _, tr) ) => tr. path . span ,
776+ Some ( EntryLocal ( _, pat) ) => pat. span ,
777+ Some ( EntryPat ( _, pat) ) => pat. span ,
778+ Some ( EntryBlock ( _, block) ) => block. span ,
779+ Some ( EntryStructCtor ( _, _) ) => self . expect_item ( self . get_parent ( id) ) . span ,
780+ Some ( EntryLifetime ( _, lifetime) ) => lifetime. span ,
781+ Some ( EntryTyParam ( _, ty_param) ) => ty_param. span ,
782+ Some ( EntryVisibility ( _, & Visibility :: Restricted { ref path, .. } ) ) => path. span ,
783+ Some ( EntryVisibility ( _, v) ) => bug ! ( "unexpected Visibility {:?}" , v) ,
784+
785+ Some ( RootCrate ) => self . krate ( ) . span ,
786+ Some ( RootInlinedParent ( parent) ) => parent. body . span ,
787+ Some ( NotPresent ) | None => {
788+ bug ! ( "hir::map::Map::span: id not in map: {:?}" , id)
789+ }
790+ }
790791 }
791792
792793 pub fn span_if_local ( & self , id : DefId ) -> Option < Span > {
793794 self . as_local_node_id ( id) . map ( |id| self . span ( id) )
794795 }
795796
796- pub fn def_id_span ( & self , def_id : DefId , fallback : Span ) -> Span {
797- if let Some ( node_id) = self . as_local_node_id ( def_id) {
798- self . opt_span ( node_id) . unwrap_or ( fallback)
799- } else {
800- fallback
801- }
802- }
803-
804797 pub fn node_to_string ( & self , id : NodeId ) -> String {
805798 node_id_to_string ( self , id, true )
806799 }
0 commit comments