Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/parsing/text_tree_sink.rs')
| -rw-r--r-- | crates/syntax/src/parsing/text_tree_sink.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/crates/syntax/src/parsing/text_tree_sink.rs b/crates/syntax/src/parsing/text_tree_sink.rs index 8c1de92048..c1792199fd 100644 --- a/crates/syntax/src/parsing/text_tree_sink.rs +++ b/crates/syntax/src/parsing/text_tree_sink.rs @@ -104,7 +104,7 @@ impl<'a> TextTreeSink<'a> { } } - pub(super) fn finish(mut self) -> (GreenNode, Vec<SyntaxError>) { + pub(super) fn finish_eof(mut self) -> (GreenNode, Vec<SyntaxError>, bool) { match mem::replace(&mut self.state, State::Normal) { State::PendingFinish => { self.eat_trivias(); @@ -113,7 +113,15 @@ impl<'a> TextTreeSink<'a> { State::PendingStart | State::Normal => unreachable!(), } - self.inner.finish_raw() + let (node, errors) = self.inner.finish_raw(); + let is_eof = self.token_pos == self.tokens.len(); + + (node, errors, is_eof) + } + + pub(super) fn finish(self) -> (GreenNode, Vec<SyntaxError>) { + let (node, errors, _eof) = self.finish_eof(); + (node, errors) } fn eat_trivias(&mut self) { |