@@ -71,7 +71,7 @@ pub struct SyntaxContextData {
7171    /// This context, but with all transparent expansions filtered away. 
7272opaque_and_semitransparent :  SyntaxContext , 
7373    /// Name of the crate to which `$crate` with this context would resolve. 
74- dollar_crate_name :  Symbol , 
74+ dollar_crate_name :  Option < Symbol > , 
7575} 
7676
7777impl  SyntaxContextData  { 
@@ -82,16 +82,16 @@ impl SyntaxContextData {
8282            parent :  SyntaxContext :: root ( ) , 
8383            opaque :  SyntaxContext :: root ( ) , 
8484            opaque_and_semitransparent :  SyntaxContext :: root ( ) , 
85-             dollar_crate_name :  kw:: DollarCrate , 
85+             dollar_crate_name :  Some ( kw:: DollarCrate ) , 
8686        } 
8787    } 
8888
8989    fn  decode_placeholder ( )  -> SyntaxContextData  { 
90-         SyntaxContextData  {  dollar_crate_name :  kw :: Empty ,  ..SyntaxContextData :: root ( )  } 
90+         SyntaxContextData  {  dollar_crate_name :  None ,  ..SyntaxContextData :: root ( )  } 
9191    } 
9292
9393    fn  is_decode_placeholder ( & self )  -> bool  { 
94-         self . dollar_crate_name  == kw :: Empty 
94+         self . dollar_crate_name . is_none ( ) 
9595    } 
9696
9797    fn  key ( & self )  -> SyntaxContextKey  { 
@@ -597,7 +597,7 @@ impl HygieneData {
597597                        parent, 
598598                        opaque :  new_opaque, 
599599                        opaque_and_semitransparent :  new_opaque, 
600-                         dollar_crate_name :  kw:: DollarCrate , 
600+                         dollar_crate_name :  Some ( kw:: DollarCrate ) , 
601601                    } ) ; 
602602                    new_opaque
603603                } ) ; 
@@ -617,7 +617,7 @@ impl HygieneData {
617617                        parent, 
618618                        opaque, 
619619                        opaque_and_semitransparent :  new_opaque_and_semitransparent, 
620-                         dollar_crate_name :  kw:: DollarCrate , 
620+                         dollar_crate_name :  Some ( kw:: DollarCrate ) , 
621621                    } ) ; 
622622                    new_opaque_and_semitransparent
623623                } ) ; 
@@ -631,7 +631,7 @@ impl HygieneData {
631631                parent, 
632632                opaque, 
633633                opaque_and_semitransparent, 
634-                 dollar_crate_name :  kw:: DollarCrate , 
634+                 dollar_crate_name :  Some ( kw:: DollarCrate ) , 
635635            } ) ; 
636636            SyntaxContext :: from_usize ( syntax_context_data. len ( )  - 1 ) 
637637        } ) 
@@ -657,7 +657,7 @@ pub fn update_dollar_crate_names(mut get_name: impl FnMut(SyntaxContext) -> Symb
657657    let  mut  to_update = vec ! [ ] ; 
658658    HygieneData :: with ( |data| { 
659659        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 )  { 
661661                to_update. push ( ( idx,  kw:: DollarCrate ) ) ; 
662662            }  else  if  !scdata. is_decode_placeholder ( )  { 
663663                break ; 
@@ -671,7 +671,7 @@ pub fn update_dollar_crate_names(mut get_name: impl FnMut(SyntaxContext) -> Symb
671671    } 
672672    HygieneData :: with ( |data| { 
673673        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) ; 
675675        } 
676676    } ) 
677677} 
@@ -927,7 +927,7 @@ impl SyntaxContext {
927927    pub ( crate )  fn  dollar_crate_name ( self )  -> Symbol  { 
928928        HygieneData :: with ( |data| { 
929929            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 ( ) 
931931        } ) 
932932    } 
933933
@@ -1478,10 +1478,10 @@ pub fn decode_syntax_context<D: Decoder, F: FnOnce(&mut D, u32) -> SyntaxContext
14781478                let  ctxt_data_ref =
14791479                    & mut  hygiene_data. syntax_context_data [ pending_ctxt. as_u32 ( )  as  usize ] ; 
14801480                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`. 
14821482                // We don't care what the encoding crate set this to - we want to resolve it 
14831483                // 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 ) ; 
14851485                // Make sure nothing weird happened while `decode_data` was running. 
14861486                if  !prev_ctxt_data. is_decode_placeholder ( )  { 
14871487                    // Another thread may have already inserted the decoded data, 
0 commit comments