@@ -1065,33 +1065,41 @@ impl Span {
1065
1065
1066
1066
#[ inline]
1067
1067
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
+ } ) ;
1071
1073
mark
1072
1074
}
1073
1075
1074
1076
#[ inline]
1075
1077
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
+ } ) ;
1079
1083
mark
1080
1084
}
1081
1085
1082
1086
#[ inline]
1083
1087
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
+ } ) ;
1087
1093
mark
1088
1094
}
1089
1095
1090
1096
#[ inline]
1091
1097
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
+ } ) ;
1095
1103
mark
1096
1104
}
1097
1105
@@ -1101,9 +1109,11 @@ impl Span {
1101
1109
expn_id : ExpnId ,
1102
1110
glob_span : Span ,
1103
1111
) -> 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
+ } ) ;
1107
1117
mark
1108
1118
}
1109
1119
0 commit comments