@@ -5,7 +5,7 @@ use either::Either;
55use span:: { FileId , FileRange , HirFileId , HirFileIdRepr , MacroFileId , SyntaxContextId } ;
66use syntax:: { AstNode , SyntaxNode , SyntaxToken , TextRange , TextSize } ;
77
8- use crate :: { db, ExpansionInfo , MacroFileIdExt } ;
8+ use crate :: { db, map_node_range_up , span_for_offset , MacroFileIdExt } ;
99
1010/// `InFile<T>` stores a value of `T` inside a particular file/syntax tree.
1111///
@@ -147,7 +147,7 @@ impl InFile<&SyntaxNode> {
147147 HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value . text_range ( ) } ,
148148 HirFileIdRepr :: MacroFile ( mac_file) => {
149149 if let Some ( ( res, ctxt) ) =
150- ExpansionInfo :: new ( db, mac_file ) . map_node_range_up ( db , self . value . text_range ( ) )
150+ map_node_range_up ( db, & db . expansion_span_map ( mac_file ) , self . value . text_range ( ) )
151151 {
152152 // FIXME: Figure out an API that makes proper use of ctx, this only exists to
153153 // keep pre-token map rewrite behaviour.
@@ -163,12 +163,15 @@ impl InFile<&SyntaxNode> {
163163 }
164164
165165 /// Falls back to the macro call range if the node cannot be mapped up fully.
166- pub fn original_file_range_full ( self , db : & dyn db:: ExpandDatabase ) -> FileRange {
166+ pub fn original_file_range_with_macro_call_body (
167+ self ,
168+ db : & dyn db:: ExpandDatabase ,
169+ ) -> FileRange {
167170 match self . file_id . repr ( ) {
168171 HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value . text_range ( ) } ,
169172 HirFileIdRepr :: MacroFile ( mac_file) => {
170173 if let Some ( ( res, ctxt) ) =
171- ExpansionInfo :: new ( db, mac_file ) . map_node_range_up ( db , self . value . text_range ( ) )
174+ map_node_range_up ( db, & db . expansion_span_map ( mac_file ) , self . value . text_range ( ) )
172175 {
173176 // FIXME: Figure out an API that makes proper use of ctx, this only exists to
174177 // keep pre-token map rewrite behaviour.
@@ -193,7 +196,7 @@ impl InFile<&SyntaxNode> {
193196 Some ( ( FileRange { file_id, range : self . value . text_range ( ) } , SyntaxContextId :: ROOT ) )
194197 }
195198 HirFileIdRepr :: MacroFile ( mac_file) => {
196- ExpansionInfo :: new ( db, mac_file ) . map_node_range_up ( db , self . value . text_range ( ) )
199+ map_node_range_up ( db, & db . expansion_span_map ( mac_file ) , self . value . text_range ( ) )
197200 }
198201 }
199202 }
@@ -215,7 +218,7 @@ impl InFile<&SyntaxNode> {
215218 }
216219
217220 let ( FileRange { file_id, range } , ctx) =
218- ExpansionInfo :: new ( db, file_id ) . map_node_range_up ( db , self . value . text_range ( ) ) ?;
221+ map_node_range_up ( db, & db . expansion_span_map ( file_id ) , self . value . text_range ( ) ) ?;
219222
220223 // FIXME: Figure out an API that makes proper use of ctx, this only exists to
221224 // keep pre-token map rewrite behaviour.
@@ -246,8 +249,11 @@ impl InFile<SyntaxToken> {
246249 match self . file_id . repr ( ) {
247250 HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value . text_range ( ) } ,
248251 HirFileIdRepr :: MacroFile ( mac_file) => {
249- let ( range, ctxt) = ExpansionInfo :: new ( db, mac_file)
250- . span_for_offset ( db, self . value . text_range ( ) . start ( ) ) ;
252+ let ( range, ctxt) = span_for_offset (
253+ db,
254+ & db. expansion_span_map ( mac_file) ,
255+ self . value . text_range ( ) . start ( ) ,
256+ ) ;
251257
252258 // FIXME: Figure out an API that makes proper use of ctx, this only exists to
253259 // keep pre-token map rewrite behaviour.
@@ -269,8 +275,11 @@ impl InFile<SyntaxToken> {
269275 Some ( FileRange { file_id, range : self . value . text_range ( ) } )
270276 }
271277 HirFileIdRepr :: MacroFile ( mac_file) => {
272- let ( range, ctxt) = ExpansionInfo :: new ( db, mac_file)
273- . span_for_offset ( db, self . value . text_range ( ) . start ( ) ) ;
278+ let ( range, ctxt) = span_for_offset (
279+ db,
280+ & db. expansion_span_map ( mac_file) ,
281+ self . value . text_range ( ) . start ( ) ,
282+ ) ;
274283
275284 // FIXME: Figure out an API that makes proper use of ctx, this only exists to
276285 // keep pre-token map rewrite behaviour.
@@ -286,7 +295,7 @@ impl InFile<SyntaxToken> {
286295
287296impl InMacroFile < TextSize > {
288297 pub fn original_file_range ( self , db : & dyn db:: ExpandDatabase ) -> ( FileRange , SyntaxContextId ) {
289- ExpansionInfo :: new ( db, self . file_id ) . span_for_offset ( db , self . value )
298+ span_for_offset ( db, & db . expansion_span_map ( self . file_id ) , self . value )
290299 }
291300}
292301
@@ -300,7 +309,7 @@ impl InFile<TextRange> {
300309 ( FileRange { file_id, range : self . value } , SyntaxContextId :: ROOT )
301310 }
302311 HirFileIdRepr :: MacroFile ( mac_file) => {
303- match ExpansionInfo :: new ( db, mac_file ) . map_node_range_up ( db , self . value ) {
312+ match map_node_range_up ( db, & db . expansion_span_map ( mac_file ) , self . value ) {
304313 Some ( it) => it,
305314 None => {
306315 let loc = db. lookup_intern_macro_call ( mac_file. macro_call_id ) ;
@@ -315,7 +324,7 @@ impl InFile<TextRange> {
315324 match self . file_id . repr ( ) {
316325 HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value } ,
317326 HirFileIdRepr :: MacroFile ( mac_file) => {
318- match ExpansionInfo :: new ( db, mac_file ) . map_node_range_up ( db , self . value ) {
327+ match map_node_range_up ( db, & db . expansion_span_map ( mac_file ) , self . value ) {
319328 Some ( ( it, SyntaxContextId :: ROOT ) ) => it,
320329 _ => {
321330 let loc = db. lookup_intern_macro_call ( mac_file. macro_call_id ) ;
@@ -335,7 +344,7 @@ impl InFile<TextRange> {
335344 Some ( ( FileRange { file_id, range : self . value } , SyntaxContextId :: ROOT ) )
336345 }
337346 HirFileIdRepr :: MacroFile ( mac_file) => {
338- ExpansionInfo :: new ( db, mac_file ) . map_node_range_up ( db , self . value )
347+ map_node_range_up ( db, & db . expansion_span_map ( mac_file ) , self . value )
339348 }
340349 }
341350 }
@@ -355,8 +364,11 @@ impl<N: AstNode> InFile<N> {
355364 return None ;
356365 }
357366
358- let ( FileRange { file_id, range } , ctx) = ExpansionInfo :: new ( db, file_id)
359- . map_node_range_up ( db, self . value . syntax ( ) . text_range ( ) ) ?;
367+ let ( FileRange { file_id, range } , ctx) = map_node_range_up (
368+ db,
369+ & db. expansion_span_map ( file_id) ,
370+ self . value . syntax ( ) . text_range ( ) ,
371+ ) ?;
360372
361373 // FIXME: Figure out an API that makes proper use of ctx, this only exists to
362374 // keep pre-token map rewrite behaviour.
0 commit comments