@@ -42,8 +42,8 @@ pub struct SyntaxContext(u32);
42
42
#[ derive( Debug ) ]
43
43
struct SyntaxContextData {
44
44
outer_expn : ExpnId ,
45
- transparency : Transparency ,
46
- prev_ctxt : SyntaxContext ,
45
+ outer_transparency : Transparency ,
46
+ parent : SyntaxContext ,
47
47
/// This context, but with all transparent and semi-transparent expansions filtered away.
48
48
opaque : SyntaxContext ,
49
49
/// This context, but with all transparent expansions filtered away.
@@ -108,7 +108,7 @@ impl ExpnId {
108
108
109
109
#[ inline]
110
110
pub fn parent ( self ) -> ExpnId {
111
- HygieneData :: with ( |data| data. expn_data [ self . 0 as usize ] . parent )
111
+ HygieneData :: with ( |data| data. parent_expn ( self ) )
112
112
}
113
113
114
114
#[ inline]
@@ -129,10 +129,10 @@ impl ExpnId {
129
129
HygieneData :: with ( |data| data. is_descendant_of ( self , ancestor) )
130
130
}
131
131
132
- /// `expn_id.outer_is_descendant_of (ctxt)` is equivalent to but faster than
133
- /// `expn_id.is_descendant_of(ctxt.outer ())`.
134
- pub fn outer_is_descendant_of ( self , ctxt : SyntaxContext ) -> bool {
135
- HygieneData :: with ( |data| data. is_descendant_of ( self , data. outer ( ctxt) ) )
132
+ /// `expn_id.outer_expn_is_descendant_of (ctxt)` is equivalent to but faster than
133
+ /// `expn_id.is_descendant_of(ctxt.outer_expn ())`.
134
+ pub fn outer_expn_is_descendant_of ( self , ctxt : SyntaxContext ) -> bool {
135
+ HygieneData :: with ( |data| data. is_descendant_of ( self , data. outer_expn ( ctxt) ) )
136
136
}
137
137
138
138
// Used for enabling some compatibility fallback in resolve.
@@ -167,8 +167,8 @@ impl HygieneData {
167
167
} ] ,
168
168
syntax_context_data : vec ! [ SyntaxContextData {
169
169
outer_expn: ExpnId :: root( ) ,
170
- transparency : Transparency :: Opaque ,
171
- prev_ctxt : SyntaxContext ( 0 ) ,
170
+ outer_transparency : Transparency :: Opaque ,
171
+ parent : SyntaxContext ( 0 ) ,
172
172
opaque: SyntaxContext ( 0 ) ,
173
173
opaque_and_semitransparent: SyntaxContext ( 0 ) ,
174
174
dollar_crate_name: kw:: DollarCrate ,
@@ -186,6 +186,10 @@ impl HygieneData {
186
186
ExpnId ( self . expn_data . len ( ) as u32 - 1 )
187
187
}
188
188
189
+ fn parent_expn ( & self , expn_id : ExpnId ) -> ExpnId {
190
+ self . expn_data [ expn_id. 0 as usize ] . parent
191
+ }
192
+
189
193
fn expn_info ( & self , expn_id : ExpnId ) -> Option < & ExpnInfo > {
190
194
if expn_id != ExpnId :: root ( ) {
191
195
Some ( self . expn_data [ expn_id. 0 as usize ] . expn_info . as_ref ( )
@@ -203,7 +207,7 @@ impl HygieneData {
203
207
if expn_id == ExpnId :: root ( ) {
204
208
return false ;
205
209
}
206
- expn_id = self . expn_data [ expn_id. 0 as usize ] . parent ;
210
+ expn_id = self . parent_expn ( expn_id) ;
207
211
}
208
212
true
209
213
}
@@ -222,40 +226,37 @@ impl HygieneData {
222
226
self . syntax_context_data [ ctxt. 0 as usize ] . opaque_and_semitransparent
223
227
}
224
228
225
- fn outer ( & self , ctxt : SyntaxContext ) -> ExpnId {
229
+ fn outer_expn ( & self , ctxt : SyntaxContext ) -> ExpnId {
226
230
self . syntax_context_data [ ctxt. 0 as usize ] . outer_expn
227
231
}
228
232
229
- fn transparency ( & self , ctxt : SyntaxContext ) -> Transparency {
230
- self . syntax_context_data [ ctxt. 0 as usize ] . transparency
233
+ fn outer_transparency ( & self , ctxt : SyntaxContext ) -> Transparency {
234
+ self . syntax_context_data [ ctxt. 0 as usize ] . outer_transparency
231
235
}
232
236
233
- fn prev_ctxt ( & self , ctxt : SyntaxContext ) -> SyntaxContext {
234
- self . syntax_context_data [ ctxt. 0 as usize ] . prev_ctxt
237
+ fn parent_ctxt ( & self , ctxt : SyntaxContext ) -> SyntaxContext {
238
+ self . syntax_context_data [ ctxt. 0 as usize ] . parent
235
239
}
236
240
237
241
fn remove_mark ( & self , ctxt : & mut SyntaxContext ) -> ExpnId {
238
- let outer_expn = self . syntax_context_data [ ctxt . 0 as usize ] . outer_expn ;
239
- * ctxt = self . prev_ctxt ( * ctxt) ;
242
+ let outer_expn = self . outer_expn ( * ctxt ) ;
243
+ * ctxt = self . parent_ctxt ( * ctxt) ;
240
244
outer_expn
241
245
}
242
246
243
247
fn marks ( & self , mut ctxt : SyntaxContext ) -> Vec < ( ExpnId , Transparency ) > {
244
248
let mut marks = Vec :: new ( ) ;
245
249
while ctxt != SyntaxContext :: empty ( ) {
246
- let outer_expn = self . outer ( ctxt) ;
247
- let transparency = self . transparency ( ctxt) ;
248
- let prev_ctxt = self . prev_ctxt ( ctxt) ;
249
- marks. push ( ( outer_expn, transparency) ) ;
250
- ctxt = prev_ctxt;
250
+ marks. push ( ( self . outer_expn ( ctxt) , self . outer_transparency ( ctxt) ) ) ;
251
+ ctxt = self . parent_ctxt ( ctxt) ;
251
252
}
252
253
marks. reverse ( ) ;
253
254
marks
254
255
}
255
256
256
257
fn walk_chain ( & self , mut span : Span , to : SyntaxContext ) -> Span {
257
258
while span. ctxt ( ) != crate :: NO_EXPANSION && span. ctxt ( ) != to {
258
- if let Some ( info) = self . expn_info ( self . outer ( span. ctxt ( ) ) ) {
259
+ if let Some ( info) = self . expn_info ( self . outer_expn ( span. ctxt ( ) ) ) {
259
260
span = info. call_site ;
260
261
} else {
261
262
break ;
@@ -266,7 +267,7 @@ impl HygieneData {
266
267
267
268
fn adjust ( & self , ctxt : & mut SyntaxContext , expn_id : ExpnId ) -> Option < ExpnId > {
268
269
let mut scope = None ;
269
- while !self . is_descendant_of ( expn_id, self . outer ( * ctxt) ) {
270
+ while !self . is_descendant_of ( expn_id, self . outer_expn ( * ctxt) ) {
270
271
scope = Some ( self . remove_mark ( ctxt) ) ;
271
272
}
272
273
scope
@@ -320,14 +321,14 @@ impl HygieneData {
320
321
syntax_context_data[ ctxt. 0 as usize ] . opaque_and_semitransparent ;
321
322
322
323
if transparency >= Transparency :: Opaque {
323
- let prev_ctxt = opaque;
324
- opaque = * self . syntax_context_map . entry ( ( prev_ctxt , expn_id, transparency) )
324
+ let parent = opaque;
325
+ opaque = * self . syntax_context_map . entry ( ( parent , expn_id, transparency) )
325
326
. or_insert_with ( || {
326
327
let new_opaque = SyntaxContext ( syntax_context_data. len ( ) as u32 ) ;
327
328
syntax_context_data. push ( SyntaxContextData {
328
329
outer_expn : expn_id,
329
- transparency,
330
- prev_ctxt ,
330
+ outer_transparency : transparency,
331
+ parent ,
331
332
opaque : new_opaque,
332
333
opaque_and_semitransparent : new_opaque,
333
334
dollar_crate_name : kw:: DollarCrate ,
@@ -337,16 +338,16 @@ impl HygieneData {
337
338
}
338
339
339
340
if transparency >= Transparency :: SemiTransparent {
340
- let prev_ctxt = opaque_and_semitransparent;
341
+ let parent = opaque_and_semitransparent;
341
342
opaque_and_semitransparent =
342
- * self . syntax_context_map . entry ( ( prev_ctxt , expn_id, transparency) )
343
+ * self . syntax_context_map . entry ( ( parent , expn_id, transparency) )
343
344
. or_insert_with ( || {
344
345
let new_opaque_and_semitransparent =
345
346
SyntaxContext ( syntax_context_data. len ( ) as u32 ) ;
346
347
syntax_context_data. push ( SyntaxContextData {
347
348
outer_expn : expn_id,
348
- transparency,
349
- prev_ctxt ,
349
+ outer_transparency : transparency,
350
+ parent ,
350
351
opaque,
351
352
opaque_and_semitransparent : new_opaque_and_semitransparent,
352
353
dollar_crate_name : kw:: DollarCrate ,
@@ -355,14 +356,14 @@ impl HygieneData {
355
356
} ) ;
356
357
}
357
358
358
- let prev_ctxt = ctxt;
359
- * self . syntax_context_map . entry ( ( prev_ctxt , expn_id, transparency) ) . or_insert_with ( || {
359
+ let parent = ctxt;
360
+ * self . syntax_context_map . entry ( ( parent , expn_id, transparency) ) . or_insert_with ( || {
360
361
let new_opaque_and_semitransparent_and_transparent =
361
362
SyntaxContext ( syntax_context_data. len ( ) as u32 ) ;
362
363
syntax_context_data. push ( SyntaxContextData {
363
364
outer_expn : expn_id,
364
- transparency,
365
- prev_ctxt ,
365
+ outer_transparency : transparency,
366
+ parent ,
366
367
opaque,
367
368
opaque_and_semitransparent,
368
369
dollar_crate_name : kw:: DollarCrate ,
@@ -372,7 +373,7 @@ impl HygieneData {
372
373
}
373
374
}
374
375
375
- pub fn syntax_context_map ( ) {
376
+ pub fn clear_syntax_context_map ( ) {
376
377
HygieneData :: with ( |data| data. syntax_context_map = FxHashMap :: default ( ) ) ;
377
378
}
378
379
@@ -513,7 +514,7 @@ impl SyntaxContext {
513
514
HygieneData :: with ( |data| {
514
515
let mut scope = None ;
515
516
let mut glob_ctxt = data. modern ( glob_span. ctxt ( ) ) ;
516
- while !data. is_descendant_of ( expn_id, data. outer ( glob_ctxt) ) {
517
+ while !data. is_descendant_of ( expn_id, data. outer_expn ( glob_ctxt) ) {
517
518
scope = Some ( data. remove_mark ( & mut glob_ctxt) ) ;
518
519
if data. remove_mark ( self ) != scope. unwrap ( ) {
519
520
return None ;
@@ -542,7 +543,7 @@ impl SyntaxContext {
542
543
543
544
let mut glob_ctxt = data. modern ( glob_span. ctxt ( ) ) ;
544
545
let mut marks = Vec :: new ( ) ;
545
- while !data. is_descendant_of ( expn_id, data. outer ( glob_ctxt) ) {
546
+ while !data. is_descendant_of ( expn_id, data. outer_expn ( glob_ctxt) ) {
546
547
marks. push ( data. remove_mark ( & mut glob_ctxt) ) ;
547
548
}
548
549
@@ -573,23 +574,23 @@ impl SyntaxContext {
573
574
}
574
575
575
576
#[ inline]
576
- pub fn outer ( self ) -> ExpnId {
577
- HygieneData :: with ( |data| data. outer ( self ) )
577
+ pub fn outer_expn ( self ) -> ExpnId {
578
+ HygieneData :: with ( |data| data. outer_expn ( self ) )
578
579
}
579
580
580
581
/// `ctxt.outer_expn_info()` is equivalent to but faster than
581
- /// `ctxt.outer ().expn_info()`.
582
+ /// `ctxt.outer_expn ().expn_info()`.
582
583
#[ inline]
583
584
pub fn outer_expn_info ( self ) -> Option < ExpnInfo > {
584
- HygieneData :: with ( |data| data. expn_info ( data. outer ( self ) ) . cloned ( ) )
585
+ HygieneData :: with ( |data| data. expn_info ( data. outer_expn ( self ) ) . cloned ( ) )
585
586
}
586
587
587
- /// `ctxt.outer_and_expn_info ()` is equivalent to but faster than
588
- /// `{ let outer = ctxt.outer (); (outer, outer.expn_info()) }`.
588
+ /// `ctxt.outer_expn_with_info ()` is equivalent to but faster than
589
+ /// `{ let outer = ctxt.outer_expn (); (outer, outer.expn_info()) }`.
589
590
#[ inline]
590
- pub fn outer_and_expn_info ( self ) -> ( ExpnId , Option < ExpnInfo > ) {
591
+ pub fn outer_expn_with_info ( self ) -> ( ExpnId , Option < ExpnInfo > ) {
591
592
HygieneData :: with ( |data| {
592
- let outer = data. outer ( self ) ;
593
+ let outer = data. outer_expn ( self ) ;
593
594
( outer, data. expn_info ( outer) . cloned ( ) )
594
595
} )
595
596
}
@@ -613,7 +614,7 @@ impl Span {
613
614
/// but its location is inherited from the current span.
614
615
pub fn fresh_expansion ( self , parent : ExpnId , expn_info : ExpnInfo ) -> Span {
615
616
HygieneData :: with ( |data| {
616
- let expn_id = data. fresh_expn_id ( parent, Some ( expn_info) ) ;
617
+ let expn_id = data. fresh_expn ( parent, Some ( expn_info) ) ;
617
618
self . with_ctxt ( data. apply_mark ( SyntaxContext :: empty ( ) , expn_id) )
618
619
} )
619
620
}
0 commit comments