diff options
| author | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-06-02 08:27:36 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <nnethercote@mozilla.com> | 2019-06-05 07:43:14 +1000 |
| commit | a02b2e36c0f1b601519ec6bc71b2d8ff621b4625 (patch) | |
| tree | bd4b2c8bbce0b20b3482fa64ddf7ac4d5eaf3032 /src/libsyntax_pos | |
| parent | 88fd7a8eb7a0d0ada3e33060969ccd91cba0132b (diff) | |
| download | rust-a02b2e36c0f1b601519ec6bc71b2d8ff621b4625.tar.gz rust-a02b2e36c0f1b601519ec6bc71b2d8ff621b4625.zip | |
Add `HygieneData::marks`.
Diffstat (limited to 'src/libsyntax_pos')
| -rw-r--r-- | src/libsyntax_pos/hygiene.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/libsyntax_pos/hygiene.rs b/src/libsyntax_pos/hygiene.rs index e8dadf09648..b79cd707e01 100644 --- a/src/libsyntax_pos/hygiene.rs +++ b/src/libsyntax_pos/hygiene.rs @@ -244,6 +244,19 @@ impl HygieneData { outer_mark } + fn marks(&self, mut ctxt: SyntaxContext) -> Vec<(Mark, Transparency)> { + let mut marks = Vec::new(); + while ctxt != SyntaxContext::empty() { + let outer_mark = self.outer(ctxt); + let transparency = self.transparency(ctxt); + let prev_ctxt = self.prev_ctxt(ctxt); + marks.push((outer_mark, transparency)); + ctxt = prev_ctxt; + } + marks.reverse(); + marks + } + fn adjust(&self, ctxt: &mut SyntaxContext, expansion: Mark) -> Option<Mark> { let mut scope = None; while !self.is_descendant_of(expansion, self.outer(*ctxt)) { @@ -423,19 +436,8 @@ impl SyntaxContext { HygieneData::with(|data| data.remove_mark(self)) } - pub fn marks(mut self) -> Vec<(Mark, Transparency)> { - HygieneData::with(|data| { - let mut marks = Vec::new(); - while self != SyntaxContext::empty() { - let outer_mark = data.outer(self); - let transparency = data.transparency(self); - let prev_ctxt = data.prev_ctxt(self); - marks.push((outer_mark, transparency)); - self = prev_ctxt; - } - marks.reverse(); - marks - }) + pub fn marks(self) -> Vec<(Mark, Transparency)> { + HygieneData::with(|data| data.marks(self)) } /// Adjust this context for resolution in a scope created by the given expansion. |
