@@ -853,61 +853,30 @@ impl<'hir> Map<'hir> {
853
853
/// This is used by `tcx.get_span`
854
854
pub fn span ( & self , hir_id : HirId ) -> Span {
855
855
match self . find_entry ( hir_id) . map ( |entry| entry. node ) {
856
- Some ( Node :: Param ( param) ) => param. span ,
857
- Some ( Node :: Item ( item) ) => match & item. kind {
858
- ItemKind :: Fn ( sig, _, _) => sig. span ,
859
- _ => item. span ,
860
- } ,
861
- Some ( Node :: ForeignItem ( foreign_item) ) => foreign_item. span ,
862
- Some ( Node :: TraitItem ( trait_item) ) => match & trait_item. kind {
863
- TraitItemKind :: Fn ( sig, _) => sig. span ,
864
- _ => trait_item. span ,
865
- } ,
866
- Some ( Node :: ImplItem ( impl_item) ) => match & impl_item. kind {
867
- ImplItemKind :: Fn ( sig, _) => sig. span ,
868
- _ => impl_item. span ,
869
- } ,
870
- Some ( Node :: Variant ( variant) ) => variant. span ,
871
- Some ( Node :: Field ( field) ) => field. span ,
872
- Some ( Node :: AnonConst ( constant) ) => self . body ( constant. body ) . value . span ,
873
- Some ( Node :: Expr ( expr) ) => expr. span ,
874
- Some ( Node :: Stmt ( stmt) ) => stmt. span ,
875
- Some ( Node :: PathSegment ( seg) ) => seg. ident . span ,
876
- Some ( Node :: Ty ( ty) ) => ty. span ,
877
- Some ( Node :: TraitRef ( tr) ) => tr. path . span ,
878
- Some ( Node :: Binding ( pat) ) => pat. span ,
879
- Some ( Node :: Pat ( pat) ) => pat. span ,
880
- Some ( Node :: Arm ( arm) ) => arm. span ,
881
- Some ( Node :: Block ( block) ) => block. span ,
882
- Some ( Node :: Ctor ( ..) ) => match self . find ( self . get_parent_node ( hir_id) ) {
883
- Some ( Node :: Item ( item) ) => item. span ,
884
- Some ( Node :: Variant ( variant) ) => variant. span ,
885
- _ => unreachable ! ( ) ,
886
- } ,
887
- Some ( Node :: Lifetime ( lifetime) ) => lifetime. span ,
888
- Some ( Node :: GenericParam ( param) ) => param. span ,
889
- Some ( Node :: Visibility ( & Spanned {
890
- node : VisibilityKind :: Restricted { ref path, .. } ,
891
- ..
892
- } ) ) => path. span ,
893
- Some ( Node :: Visibility ( v) ) => bug ! ( "unexpected Visibility {:?}" , v) ,
894
- Some ( Node :: Local ( local) ) => local. span ,
895
- Some ( Node :: MacroDef ( macro_def) ) => macro_def. span ,
896
- Some ( Node :: Crate ( item) ) => item. span ,
897
- None => bug ! ( "hir::map::Map::span: id not in map: {:?}" , hir_id) ,
898
- }
856
+ Some ( Node :: Item ( item) ) => {
857
+ if let ItemKind :: Fn ( sig, _, _) = & item. kind {
858
+ return sig. span ;
859
+ }
860
+ }
861
+ Some ( Node :: TraitItem ( item) ) => {
862
+ if let TraitItemKind :: Fn ( sig, _) = & item. kind {
863
+ return sig. span ;
864
+ }
865
+ }
866
+ Some ( Node :: ImplItem ( item) ) => {
867
+ if let ImplItemKind :: Fn ( sig, _) = & item. kind {
868
+ return sig. span ;
869
+ }
870
+ }
871
+ _ => { }
872
+ } ;
873
+ self . tcx . hir_owner_spans ( hir_id. owner ) [ hir_id. local_id ]
899
874
}
900
875
901
876
/// Like `hir.span()`, but includes the body of function items
902
877
/// (instead of just the function header)
903
878
pub fn span_with_body ( & self , hir_id : HirId ) -> Span {
904
- match self . find_entry ( hir_id) . map ( |entry| entry. node ) {
905
- Some ( Node :: TraitItem ( item) ) => item. span ,
906
- Some ( Node :: ImplItem ( impl_item) ) => impl_item. span ,
907
- Some ( Node :: Item ( item) ) => item. span ,
908
- Some ( _) => self . span ( hir_id) ,
909
- _ => bug ! ( "hir::map::Map::span_with_body: id not in map: {:?}" , hir_id) ,
910
- }
879
+ self . tcx . hir_owner_spans ( hir_id. owner ) [ hir_id. local_id ]
911
880
}
912
881
913
882
pub fn span_if_local ( & self , id : DefId ) -> Option < Span > {
0 commit comments