aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_mbe/src/subtree_parser.rs
diff options
context:
space:
mode:
authorEdwin Cheng <[email protected]>2019-04-08 08:58:02 +0100
committerEdwin Cheng <[email protected]>2019-04-08 08:58:02 +0100
commit2697ecaa64570841f0ed2a3ca5bc02cf41dccc4a (patch)
tree4d1e37b88e7322abc247cf42915714cee91a5a7e /crates/ra_mbe/src/subtree_parser.rs
parenta7254201df07fb929ca689857d7472564d484c3e (diff)
Use SubtreeWalker instread of flatten TtToken
Diffstat (limited to 'crates/ra_mbe/src/subtree_parser.rs')
-rw-r--r--crates/ra_mbe/src/subtree_parser.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/crates/ra_mbe/src/subtree_parser.rs b/crates/ra_mbe/src/subtree_parser.rs
index 48eee6fa7..f198c8224 100644
--- a/crates/ra_mbe/src/subtree_parser.rs
+++ b/crates/ra_mbe/src/subtree_parser.rs
@@ -18,12 +18,12 @@ impl TreeSink for OffsetTokenSink {
18 18
19pub(crate) struct Parser<'a> { 19pub(crate) struct Parser<'a> {
20 subtree: &'a tt::Subtree, 20 subtree: &'a tt::Subtree,
21 pos: &'a mut usize, 21 cur_pos: &'a mut usize,
22} 22}
23 23
24impl<'a> Parser<'a> { 24impl<'a> Parser<'a> {
25 pub fn new(pos: &'a mut usize, subtree: &'a tt::Subtree) -> Parser<'a> { 25 pub fn new(cur_pos: &'a mut usize, subtree: &'a tt::Subtree) -> Parser<'a> {
26 Parser { pos, subtree } 26 Parser { cur_pos, subtree }
27 } 27 }
28 28
29 pub fn parse_path(self) -> Option<tt::TokenTree> { 29 pub fn parse_path(self) -> Option<tt::TokenTree> {
@@ -35,7 +35,7 @@ impl<'a> Parser<'a> {
35 F: FnOnce(&dyn TokenSource, &mut dyn TreeSink), 35 F: FnOnce(&dyn TokenSource, &mut dyn TreeSink),
36 { 36 {
37 let mut src = SubtreeTokenSource::new(self.subtree); 37 let mut src = SubtreeTokenSource::new(self.subtree);
38 src.advance(*self.pos, true); 38 src.start_from_nth(*self.cur_pos);
39 let mut sink = OffsetTokenSink { token_pos: 0 }; 39 let mut sink = OffsetTokenSink { token_pos: 0 };
40 40
41 f(&src, &mut sink); 41 f(&src, &mut sink);
@@ -44,7 +44,7 @@ impl<'a> Parser<'a> {
44 } 44 }
45 45
46 fn finish(self, parsed_token: usize, src: &mut SubtreeTokenSource) -> Option<tt::TokenTree> { 46 fn finish(self, parsed_token: usize, src: &mut SubtreeTokenSource) -> Option<tt::TokenTree> {
47 let res = src.bump_n(parsed_token, self.pos); 47 let res = src.bump_n(parsed_token, self.cur_pos);
48 let res: Vec<_> = res.into_iter().cloned().collect(); 48 let res: Vec<_> = res.into_iter().cloned().collect();
49 49
50 match res.len() { 50 match res.len() {