@@ -1065,33 +1065,41 @@ impl Span {
10651065
10661066    #[ inline]  
10671067    pub  fn  remove_mark ( & mut  self )  -> ExpnId  { 
1068-         let  mut  span = self . data ( ) ; 
1069-         let  mark = span. ctxt . remove_mark ( ) ; 
1070-         * self  = Span :: new ( span. lo ,  span. hi ,  span. ctxt ,  span. parent ) ; 
1068+         let  mut  mark = ExpnId :: root ( ) ; 
1069+         * self  = self . map_ctxt ( |mut  ctxt| { 
1070+             mark = ctxt. remove_mark ( ) ; 
1071+             ctxt
1072+         } ) ; 
10711073        mark
10721074    } 
10731075
10741076    #[ inline]  
10751077    pub  fn  adjust ( & mut  self ,  expn_id :  ExpnId )  -> Option < ExpnId >  { 
1076-         let  mut  span = self . data ( ) ; 
1077-         let  mark = span. ctxt . adjust ( expn_id) ; 
1078-         * self  = Span :: new ( span. lo ,  span. hi ,  span. ctxt ,  span. parent ) ; 
1078+         let  mut  mark = None ; 
1079+         * self  = self . map_ctxt ( |mut  ctxt| { 
1080+             mark = ctxt. adjust ( expn_id) ; 
1081+             ctxt
1082+         } ) ; 
10791083        mark
10801084    } 
10811085
10821086    #[ inline]  
10831087    pub  fn  normalize_to_macros_2_0_and_adjust ( & mut  self ,  expn_id :  ExpnId )  -> Option < ExpnId >  { 
1084-         let  mut  span = self . data ( ) ; 
1085-         let  mark = span. ctxt . normalize_to_macros_2_0_and_adjust ( expn_id) ; 
1086-         * self  = Span :: new ( span. lo ,  span. hi ,  span. ctxt ,  span. parent ) ; 
1088+         let  mut  mark = None ; 
1089+         * self  = self . map_ctxt ( |mut  ctxt| { 
1090+             mark = ctxt. normalize_to_macros_2_0_and_adjust ( expn_id) ; 
1091+             ctxt
1092+         } ) ; 
10871093        mark
10881094    } 
10891095
10901096    #[ inline]  
10911097    pub  fn  glob_adjust ( & mut  self ,  expn_id :  ExpnId ,  glob_span :  Span )  -> Option < Option < ExpnId > >  { 
1092-         let  mut  span = self . data ( ) ; 
1093-         let  mark = span. ctxt . glob_adjust ( expn_id,  glob_span) ; 
1094-         * self  = Span :: new ( span. lo ,  span. hi ,  span. ctxt ,  span. parent ) ; 
1098+         let  mut  mark = None ; 
1099+         * self  = self . map_ctxt ( |mut  ctxt| { 
1100+             mark = ctxt. glob_adjust ( expn_id,  glob_span) ; 
1101+             ctxt
1102+         } ) ; 
10951103        mark
10961104    } 
10971105
@@ -1101,9 +1109,11 @@ impl Span {
11011109        expn_id :  ExpnId , 
11021110        glob_span :  Span , 
11031111    )  -> Option < Option < ExpnId > >  { 
1104-         let  mut  span = self . data ( ) ; 
1105-         let  mark = span. ctxt . reverse_glob_adjust ( expn_id,  glob_span) ; 
1106-         * self  = Span :: new ( span. lo ,  span. hi ,  span. ctxt ,  span. parent ) ; 
1112+         let  mut  mark = None ; 
1113+         * self  = self . map_ctxt ( |mut  ctxt| { 
1114+             mark = ctxt. reverse_glob_adjust ( expn_id,  glob_span) ; 
1115+             ctxt
1116+         } ) ; 
11071117        mark
11081118    } 
11091119
0 commit comments