From d5ad0f3ca03e4ffbdfafb46a5e12d23059bc760e Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 14 Nov 2021 21:37:10 +0300 Subject: [PATCH] use eof token pattenr --- crates/parser/src/tokens.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/crates/parser/src/tokens.rs b/crates/parser/src/tokens.rs index 053d90a17248..2fd807f9b3cb 100644 --- a/crates/parser/src/tokens.rs +++ b/crates/parser/src/tokens.rs @@ -49,10 +49,18 @@ impl Tokens { pub fn len(&self) -> usize { self.kind.len() } - pub(crate) fn get(&self, idx: usize) -> Option<(SyntaxKind, bool, IdentKind)> { - let kind = *self.kind.get(idx)?; + pub(crate) fn get(&self, idx: usize) -> (SyntaxKind, bool, IdentKind) { + if idx > self.len() { + return self.eof(); + } + let kind = self.kind[idx]; let joint = self.get_joint(idx); - let ident_kind = *self.ident_kind.get(idx)?; - Some((kind, joint, ident_kind)) + let ident_kind = self.ident_kind[idx]; + (kind, joint, ident_kind) + } + + #[cold] + fn eof(&self) -> (SyntaxKind, bool, IdentKind) { + (SyntaxKind::EOF, false, 0) } }