@@ -760,47 +760,40 @@ impl<'ast> Map<'ast> {
760
760
}
761
761
}
762
762
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
-
786
763
pub fn span ( & self , id : NodeId ) -> Span {
787
764
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
+ }
790
791
}
791
792
792
793
pub fn span_if_local ( & self , id : DefId ) -> Option < Span > {
793
794
self . as_local_node_id ( id) . map ( |id| self . span ( id) )
794
795
}
795
796
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
-
804
797
pub fn node_to_string ( & self , id : NodeId ) -> String {
805
798
node_id_to_string ( self , id, true )
806
799
}
0 commit comments