diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-06-01 07:28:15 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-06-05 07:43:14 +1000 |
| commit | cd64cc835dc8342a596222a7f82646adcf1cbca6 (patch) | |
| tree | 1e933cca2eb80906982b9ca4e66dc8402f10503d /src/libsyntax_pos | |
| parent | 7bec8c94b47054c09e01564e478f044850fbf178 (diff) | |
| download | rust-cd64cc835dc8342a596222a7f82646adcf1cbca6.tar.gz rust-cd64cc835dc8342a596222a7f82646adcf1cbca6.zip | |
Add `HygieneData::remove_mark`.
Diffstat (limited to 'src/libsyntax_pos')
| -rw-r--r-- | src/libsyntax_pos/hygiene.rs | 12 |
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)> { |
