]> git.lizzy.rs Git - rust.git/commitdiff
use eof token pattenr
authorAleksey Kladov <aleksey.kladov@gmail.com>
Sun, 14 Nov 2021 18:37:10 +0000 (21:37 +0300)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Sun, 12 Dec 2021 13:54:09 +0000 (16:54 +0300)
crates/parser/src/tokens.rs

index 053d90a1724806dbb8400209f3c7b7af5f304933..2fd807f9b3cbfb3c5e2632ef4f0d86a8c72499ef 100644 (file)
@@ -49,10 +49,18 @@ fn bit_index(&self, n: usize) -> (usize, usize) {
     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)
     }
 }