diff options
Diffstat (limited to 'crates/ra_mbe/src/subtree_parser.rs')
-rw-r--r-- | crates/ra_mbe/src/subtree_parser.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/ra_mbe/src/subtree_parser.rs b/crates/ra_mbe/src/subtree_parser.rs index f07107414..709b87a38 100644 --- a/crates/ra_mbe/src/subtree_parser.rs +++ b/crates/ra_mbe/src/subtree_parser.rs | |||
@@ -2,6 +2,7 @@ use crate::subtree_source::SubtreeTokenSource; | |||
2 | 2 | ||
3 | use ra_parser::{TokenSource, TreeSink}; | 3 | use ra_parser::{TokenSource, TreeSink}; |
4 | use ra_syntax::{SyntaxKind}; | 4 | use ra_syntax::{SyntaxKind}; |
5 | use tt::buffer::TokenBuffer; | ||
5 | 6 | ||
6 | struct OffsetTokenSink { | 7 | struct OffsetTokenSink { |
7 | token_pos: usize, | 8 | token_pos: usize, |
@@ -69,7 +70,8 @@ impl<'a> Parser<'a> { | |||
69 | where | 70 | where |
70 | F: FnOnce(&dyn TokenSource, &mut dyn TreeSink), | 71 | F: FnOnce(&dyn TokenSource, &mut dyn TreeSink), |
71 | { | 72 | { |
72 | let mut src = SubtreeTokenSource::new(&self.subtree.token_trees[*self.cur_pos..]); | 73 | let buffer = TokenBuffer::new(&self.subtree.token_trees[*self.cur_pos..]); |
74 | let mut src = SubtreeTokenSource::new(&buffer); | ||
73 | let mut sink = OffsetTokenSink { token_pos: 0, error: false }; | 75 | let mut sink = OffsetTokenSink { token_pos: 0, error: false }; |
74 | 76 | ||
75 | f(&src, &mut sink); | 77 | f(&src, &mut sink); |
@@ -85,7 +87,7 @@ impl<'a> Parser<'a> { | |||
85 | let res = src.bump_n(parsed_token); | 87 | let res = src.bump_n(parsed_token); |
86 | *self.cur_pos += res.len(); | 88 | *self.cur_pos += res.len(); |
87 | 89 | ||
88 | let res: Vec<_> = res.into_iter().cloned().collect(); | 90 | let res: Vec<_> = res.into_iter().collect(); |
89 | 91 | ||
90 | match res.len() { | 92 | match res.len() { |
91 | 0 => None, | 93 | 0 => None, |