about summary refs log tree commit diff
path: root/src/libsyntax_pos
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2019-06-01 07:28:15 +1000
committerNicholas Nethercote <nnethercote@mozilla.com>2019-06-05 07:43:14 +1000
commitcd64cc835dc8342a596222a7f82646adcf1cbca6 (patch)
tree1e933cca2eb80906982b9ca4e66dc8402f10503d /src/libsyntax_pos
parent7bec8c94b47054c09e01564e478f044850fbf178 (diff)
downloadrust-cd64cc835dc8342a596222a7f82646adcf1cbca6.tar.gz
rust-cd64cc835dc8342a596222a7f82646adcf1cbca6.zip
Add `HygieneData::remove_mark`.
Diffstat (limited to 'src/libsyntax_pos')
-rw-r--r--src/libsyntax_pos/hygiene.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/libsyntax_pos/hygiene.rs b/src/libsyntax_pos/hygiene.rs
index 1f09bb1df71..97fbd228e26 100644
--- a/src/libsyntax_pos/hygiene.rs
+++ b/src/libsyntax_pos/hygiene.rs
@@ -237,6 +237,12 @@ impl HygieneData {
     fn prev_ctxt(&self, ctxt: SyntaxContext) -> SyntaxContext {
         self.syntax_contexts[ctxt.0 as usize].prev_ctxt
     }
+
+    fn remove_mark(&self, ctxt: &mut SyntaxContext) -> Mark {
+        let outer_mark = self.syntax_contexts[ctxt.0 as usize].outer_mark;
+        *ctxt = self.prev_ctxt(*ctxt);
+        outer_mark
+    }
 }
 
 pub fn clear_markings() {
@@ -406,11 +412,7 @@ impl SyntaxContext {
     /// invocation of f that created g1.
     /// Returns the mark that was removed.
     pub fn remove_mark(&mut self) -> Mark {
-        HygieneData::with(|data| {
-            let outer_mark = data.syntax_contexts[self.0 as usize].outer_mark;
-            *self = data.prev_ctxt(*self);
-            outer_mark
-        })
+        HygieneData::with(|data| data.remove_mark(self))
     }
 
     pub fn marks(mut self) -> Vec<(Mark, Transparency)> {