@@ -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