diff options
Diffstat (limited to 'src/parser/event_parser/parser.rs')
-rw-r--r-- | src/parser/event_parser/parser.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/parser/event_parser/parser.rs b/src/parser/event_parser/parser.rs index 9592b90c9..0e4d44b79 100644 --- a/src/parser/event_parser/parser.rs +++ b/src/parser/event_parser/parser.rs | |||
@@ -34,10 +34,14 @@ impl<'t> Parser<'t> { | |||
34 | } | 34 | } |
35 | 35 | ||
36 | pub(crate) fn into_events(self) -> Vec<Event> { | 36 | pub(crate) fn into_events(self) -> Vec<Event> { |
37 | assert!(self.pos == self.non_ws_tokens.len()); | 37 | assert!(self.is_eof()); |
38 | self.events | 38 | self.events |
39 | } | 39 | } |
40 | 40 | ||
41 | pub(crate) fn is_eof(&self) -> bool { | ||
42 | self.pos == self.non_ws_tokens.len() | ||
43 | } | ||
44 | |||
41 | pub(crate) fn start(&mut self, kind: SyntaxKind) { | 45 | pub(crate) fn start(&mut self, kind: SyntaxKind) { |
42 | self.event(Event::Start { kind }); | 46 | self.event(Event::Start { kind }); |
43 | } | 47 | } |
@@ -46,6 +50,15 @@ impl<'t> Parser<'t> { | |||
46 | self.event(Event::Finish); | 50 | self.event(Event::Finish); |
47 | } | 51 | } |
48 | 52 | ||
53 | pub(crate) fn bump(&mut self) -> Option<SyntaxKind> { | ||
54 | if self.is_eof() { | ||
55 | return None; | ||
56 | } | ||
57 | let idx = self.non_ws_tokens[self.pos].0; | ||
58 | self.pos += 1; | ||
59 | Some(self.raw_tokens[idx].kind) | ||
60 | } | ||
61 | |||
49 | fn event(&mut self, event: Event) { | 62 | fn event(&mut self, event: Event) { |
50 | self.events.push(event) | 63 | self.events.push(event) |
51 | } | 64 | } |