about summary refs log tree commit diff
path: root/src/libsyntax_pos
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2019-06-02 08:27:36 +1000
committerNicholas Nethercote <nnethercote@mozilla.com>2019-06-05 07:43:14 +1000
commita02b2e36c0f1b601519ec6bc71b2d8ff621b4625 (patch)
treebd4b2c8bbce0b20b3482fa64ddf7ac4d5eaf3032 /src/libsyntax_pos
parent88fd7a8eb7a0d0ada3e33060969ccd91cba0132b (diff)
downloadrust-a02b2e36c0f1b601519ec6bc71b2d8ff621b4625.tar.gz
rust-a02b2e36c0f1b601519ec6bc71b2d8ff621b4625.zip
Add `HygieneData::marks`.
Diffstat (limited to 'src/libsyntax_pos')
-rw-r--r--src/libsyntax_pos/hygiene.rs28
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.