@@ -5,7 +5,7 @@ use either::Either;
5
5
use span:: { FileId , FileRange , HirFileId , HirFileIdRepr , MacroFileId , SyntaxContextId } ;
6
6
use syntax:: { AstNode , SyntaxNode , SyntaxToken , TextRange , TextSize } ;
7
7
8
- use crate :: { db, ExpansionInfo , MacroFileIdExt } ;
8
+ use crate :: { db, map_node_range_up , span_for_offset , MacroFileIdExt } ;
9
9
10
10
/// `InFile<T>` stores a value of `T` inside a particular file/syntax tree.
11
11
///
@@ -147,7 +147,7 @@ impl InFile<&SyntaxNode> {
147
147
HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value . text_range ( ) } ,
148
148
HirFileIdRepr :: MacroFile ( mac_file) => {
149
149
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 ( ) )
151
151
{
152
152
// FIXME: Figure out an API that makes proper use of ctx, this only exists to
153
153
// keep pre-token map rewrite behaviour.
@@ -163,12 +163,15 @@ impl InFile<&SyntaxNode> {
163
163
}
164
164
165
165
/// 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 {
167
170
match self . file_id . repr ( ) {
168
171
HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value . text_range ( ) } ,
169
172
HirFileIdRepr :: MacroFile ( mac_file) => {
170
173
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 ( ) )
172
175
{
173
176
// FIXME: Figure out an API that makes proper use of ctx, this only exists to
174
177
// keep pre-token map rewrite behaviour.
@@ -193,7 +196,7 @@ impl InFile<&SyntaxNode> {
193
196
Some ( ( FileRange { file_id, range : self . value . text_range ( ) } , SyntaxContextId :: ROOT ) )
194
197
}
195
198
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 ( ) )
197
200
}
198
201
}
199
202
}
@@ -215,7 +218,7 @@ impl InFile<&SyntaxNode> {
215
218
}
216
219
217
220
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 ( ) ) ?;
219
222
220
223
// FIXME: Figure out an API that makes proper use of ctx, this only exists to
221
224
// keep pre-token map rewrite behaviour.
@@ -246,8 +249,11 @@ impl InFile<SyntaxToken> {
246
249
match self . file_id . repr ( ) {
247
250
HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value . text_range ( ) } ,
248
251
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
+ ) ;
251
257
252
258
// FIXME: Figure out an API that makes proper use of ctx, this only exists to
253
259
// keep pre-token map rewrite behaviour.
@@ -269,8 +275,11 @@ impl InFile<SyntaxToken> {
269
275
Some ( FileRange { file_id, range : self . value . text_range ( ) } )
270
276
}
271
277
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
+ ) ;
274
283
275
284
// FIXME: Figure out an API that makes proper use of ctx, this only exists to
276
285
// keep pre-token map rewrite behaviour.
@@ -286,7 +295,7 @@ impl InFile<SyntaxToken> {
286
295
287
296
impl InMacroFile < TextSize > {
288
297
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 )
290
299
}
291
300
}
292
301
@@ -300,7 +309,7 @@ impl InFile<TextRange> {
300
309
( FileRange { file_id, range : self . value } , SyntaxContextId :: ROOT )
301
310
}
302
311
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 ) {
304
313
Some ( it) => it,
305
314
None => {
306
315
let loc = db. lookup_intern_macro_call ( mac_file. macro_call_id ) ;
@@ -315,7 +324,7 @@ impl InFile<TextRange> {
315
324
match self . file_id . repr ( ) {
316
325
HirFileIdRepr :: FileId ( file_id) => FileRange { file_id, range : self . value } ,
317
326
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 ) {
319
328
Some ( ( it, SyntaxContextId :: ROOT ) ) => it,
320
329
_ => {
321
330
let loc = db. lookup_intern_macro_call ( mac_file. macro_call_id ) ;
@@ -335,7 +344,7 @@ impl InFile<TextRange> {
335
344
Some ( ( FileRange { file_id, range : self . value } , SyntaxContextId :: ROOT ) )
336
345
}
337
346
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 )
339
348
}
340
349
}
341
350
}
@@ -355,8 +364,11 @@ impl<N: AstNode> InFile<N> {
355
364
return None ;
356
365
}
357
366
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
+ ) ?;
360
372
361
373
// FIXME: Figure out an API that makes proper use of ctx, this only exists to
362
374
// keep pre-token map rewrite behaviour.
0 commit comments