@@ -71,7 +71,7 @@ pub struct SyntaxContextData {
71
71
/// This context, but with all transparent expansions filtered away.
72
72
opaque_and_semitransparent : SyntaxContext ,
73
73
/// Name of the crate to which `$crate` with this context would resolve.
74
- dollar_crate_name : Symbol ,
74
+ dollar_crate_name : Option < Symbol > ,
75
75
}
76
76
77
77
impl SyntaxContextData {
@@ -82,16 +82,16 @@ impl SyntaxContextData {
82
82
parent : SyntaxContext :: root ( ) ,
83
83
opaque : SyntaxContext :: root ( ) ,
84
84
opaque_and_semitransparent : SyntaxContext :: root ( ) ,
85
- dollar_crate_name : kw:: DollarCrate ,
85
+ dollar_crate_name : Some ( kw:: DollarCrate ) ,
86
86
}
87
87
}
88
88
89
89
fn decode_placeholder ( ) -> SyntaxContextData {
90
- SyntaxContextData { dollar_crate_name : kw :: Empty , ..SyntaxContextData :: root ( ) }
90
+ SyntaxContextData { dollar_crate_name : None , ..SyntaxContextData :: root ( ) }
91
91
}
92
92
93
93
fn is_decode_placeholder ( & self ) -> bool {
94
- self . dollar_crate_name == kw :: Empty
94
+ self . dollar_crate_name . is_none ( )
95
95
}
96
96
97
97
fn key ( & self ) -> SyntaxContextKey {
@@ -597,7 +597,7 @@ impl HygieneData {
597
597
parent,
598
598
opaque : new_opaque,
599
599
opaque_and_semitransparent : new_opaque,
600
- dollar_crate_name : kw:: DollarCrate ,
600
+ dollar_crate_name : Some ( kw:: DollarCrate ) ,
601
601
} ) ;
602
602
new_opaque
603
603
} ) ;
@@ -617,7 +617,7 @@ impl HygieneData {
617
617
parent,
618
618
opaque,
619
619
opaque_and_semitransparent : new_opaque_and_semitransparent,
620
- dollar_crate_name : kw:: DollarCrate ,
620
+ dollar_crate_name : Some ( kw:: DollarCrate ) ,
621
621
} ) ;
622
622
new_opaque_and_semitransparent
623
623
} ) ;
@@ -631,7 +631,7 @@ impl HygieneData {
631
631
parent,
632
632
opaque,
633
633
opaque_and_semitransparent,
634
- dollar_crate_name : kw:: DollarCrate ,
634
+ dollar_crate_name : Some ( kw:: DollarCrate ) ,
635
635
} ) ;
636
636
SyntaxContext :: from_usize ( syntax_context_data. len ( ) - 1 )
637
637
} )
@@ -657,7 +657,7 @@ pub fn update_dollar_crate_names(mut get_name: impl FnMut(SyntaxContext) -> Symb
657
657
let mut to_update = vec ! [ ] ;
658
658
HygieneData :: with ( |data| {
659
659
for ( idx, scdata) in data. syntax_context_data . iter ( ) . enumerate ( ) . rev ( ) {
660
- if scdata. dollar_crate_name == kw:: DollarCrate {
660
+ if scdata. dollar_crate_name == Some ( kw:: DollarCrate ) {
661
661
to_update. push ( ( idx, kw:: DollarCrate ) ) ;
662
662
} else if !scdata. is_decode_placeholder ( ) {
663
663
break ;
@@ -671,7 +671,7 @@ pub fn update_dollar_crate_names(mut get_name: impl FnMut(SyntaxContext) -> Symb
671
671
}
672
672
HygieneData :: with ( |data| {
673
673
for ( idx, name) in to_update {
674
- data. syntax_context_data [ idx] . dollar_crate_name = name;
674
+ data. syntax_context_data [ idx] . dollar_crate_name = Some ( name) ;
675
675
}
676
676
} )
677
677
}
@@ -927,7 +927,7 @@ impl SyntaxContext {
927
927
pub ( crate ) fn dollar_crate_name ( self ) -> Symbol {
928
928
HygieneData :: with ( |data| {
929
929
debug_assert ! ( !data. syntax_context_data[ self . 0 as usize ] . is_decode_placeholder( ) ) ;
930
- data. syntax_context_data [ self . 0 as usize ] . dollar_crate_name
930
+ data. syntax_context_data [ self . 0 as usize ] . dollar_crate_name . unwrap ( )
931
931
} )
932
932
}
933
933
@@ -1478,10 +1478,10 @@ pub fn decode_syntax_context<D: Decoder, F: FnOnce(&mut D, u32) -> SyntaxContext
1478
1478
let ctxt_data_ref =
1479
1479
& mut hygiene_data. syntax_context_data [ pending_ctxt. as_u32 ( ) as usize ] ;
1480
1480
let prev_ctxt_data = mem:: replace ( ctxt_data_ref, ctxt_data) ;
1481
- // Reset `dollar_crate_name` so that it will be updated by `update_dollar_crate_names`.
1481
+ // Reset `dollar_crate_name` so it will be updated by `update_dollar_crate_names`.
1482
1482
// We don't care what the encoding crate set this to - we want to resolve it
1483
1483
// from the perspective of the current compilation session.
1484
- ctxt_data_ref. dollar_crate_name = kw:: DollarCrate ;
1484
+ ctxt_data_ref. dollar_crate_name = Some ( kw:: DollarCrate ) ;
1485
1485
// Make sure nothing weird happened while `decode_data` was running.
1486
1486
if !prev_ctxt_data. is_decode_placeholder ( ) {
1487
1487
// Another thread may have already inserted the decoded data,
0 commit comments