@@ -901,11 +901,8 @@ impl ExpansionInfo {
901901 let span = self . exp_map . span_at ( token. start ( ) ) ;
902902 match & self . arg_map {
903903 SpanMap :: RealSpanMap ( _) => {
904- let file_id =
905- EditionedFileId :: from_span_guess_origin ( db, span. anchor . file_id ) . into ( ) ;
906- let anchor_offset =
907- db. ast_id_map ( file_id) . get_erased ( span. anchor . ast_id ) . text_range ( ) . start ( ) ;
908- InFile { file_id, value : smallvec:: smallvec![ span. range + anchor_offset] }
904+ let range = db. resolve_span ( span) ;
905+ InFile { file_id : range. file_id . into ( ) , value : smallvec:: smallvec![ range. range] }
909906 }
910907 SpanMap :: ExpansionSpanMap ( arg_map) => {
911908 let Some ( arg_node) = & self . arg . value else {
@@ -947,7 +944,7 @@ pub fn map_node_range_up_rooted(
947944 range : TextRange ,
948945) -> Option < FileRange > {
949946 let mut spans = exp_map. spans_for_range ( range) . filter ( |span| span. ctx . is_root ( ) ) ;
950- let Span { range, anchor, ctx : _ } = spans. next ( ) ?;
947+ let Span { range, anchor, ctx } = spans. next ( ) ?;
951948 let mut start = range. start ( ) ;
952949 let mut end = range. end ( ) ;
953950
@@ -958,10 +955,7 @@ pub fn map_node_range_up_rooted(
958955 start = start. min ( span. range . start ( ) ) ;
959956 end = end. max ( span. range . end ( ) ) ;
960957 }
961- let file_id = EditionedFileId :: from_span_guess_origin ( db, anchor. file_id ) ;
962- let anchor_offset =
963- db. ast_id_map ( file_id. into ( ) ) . get_erased ( anchor. ast_id ) . text_range ( ) . start ( ) ;
964- Some ( FileRange { file_id, range : TextRange :: new ( start, end) + anchor_offset } )
958+ Some ( db. resolve_span ( Span { range : TextRange :: new ( start, end) , anchor, ctx } ) )
965959}
966960
967961/// Maps up the text range out of the expansion hierarchy back into the original file its from.
@@ -984,10 +978,7 @@ pub fn map_node_range_up(
984978 start = start. min ( span. range . start ( ) ) ;
985979 end = end. max ( span. range . end ( ) ) ;
986980 }
987- let file_id = EditionedFileId :: from_span_guess_origin ( db, anchor. file_id ) ;
988- let anchor_offset =
989- db. ast_id_map ( file_id. into ( ) ) . get_erased ( anchor. ast_id ) . text_range ( ) . start ( ) ;
990- Some ( ( FileRange { file_id, range : TextRange :: new ( start, end) + anchor_offset } , ctx) )
981+ Some ( ( db. resolve_span ( Span { range : TextRange :: new ( start, end) , anchor, ctx } ) , ctx) )
991982}
992983
993984/// Looks up the span at the given offset.
@@ -997,10 +988,7 @@ pub fn span_for_offset(
997988 offset : TextSize ,
998989) -> ( FileRange , SyntaxContext ) {
999990 let span = exp_map. span_at ( offset) ;
1000- let file_id = EditionedFileId :: from_span_guess_origin ( db, span. anchor . file_id ) ;
1001- let anchor_offset =
1002- db. ast_id_map ( file_id. into ( ) ) . get_erased ( span. anchor . ast_id ) . text_range ( ) . start ( ) ;
1003- ( FileRange { file_id, range : span. range + anchor_offset } , span. ctx )
991+ ( db. resolve_span ( span) , span. ctx )
1004992}
1005993
1006994/// In Rust, macros expand token trees to token trees. When we want to turn a
0 commit comments