From 965585748e6bdff8b0b83d3b1b2185ea30108221 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 12 Dec 2021 18:38:49 +0300 Subject: [PATCH] more orthogonal interface --- crates/parser/src/tokens.rs | 17 ++++++++++------- crates/syntax/src/parsing.rs | 3 ++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/crates/parser/src/tokens.rs b/crates/parser/src/tokens.rs index 4f10956070f..e1aea6acfcf 100644 --- a/crates/parser/src/tokens.rs +++ b/crates/parser/src/tokens.rs @@ -25,20 +25,23 @@ pub struct Tokens { } impl Tokens { - pub fn push(&mut self, was_joint: bool, kind: SyntaxKind) { - self.push_impl(was_joint, kind, SyntaxKind::EOF) + pub fn push(&mut self, kind: SyntaxKind) { + self.push_impl(kind, SyntaxKind::EOF) + } + pub fn was_joint(&mut self, yes: bool) { + let idx = self.len(); + if yes && idx > 0 { + self.set_joint(idx - 1); + } } pub fn push_ident(&mut self, contextual_kw: SyntaxKind) { - self.push_impl(false, SyntaxKind::IDENT, contextual_kw) + self.push_impl(SyntaxKind::IDENT, contextual_kw) } - fn push_impl(&mut self, was_joint: bool, kind: SyntaxKind, contextual_kw: SyntaxKind) { + fn push_impl(&mut self, kind: SyntaxKind, contextual_kw: SyntaxKind) { let idx = self.len(); if idx % (bits::BITS as usize) == 0 { self.joint.push(0); } - if was_joint && idx > 0 { - self.set_joint(idx - 1); - } self.kind.push(kind); self.contextual_kw.push(contextual_kw); } diff --git a/crates/syntax/src/parsing.rs b/crates/syntax/src/parsing.rs index 652668e80b2..5cafe70dd7d 100644 --- a/crates/syntax/src/parsing.rs +++ b/crates/syntax/src/parsing.rs @@ -68,7 +68,8 @@ pub(crate) fn to_parser_tokens(text: &str, lexer_tokens: &[lexer::Token]) -> ::p SyntaxKind::from_contextual_keyword(token_text).unwrap_or(SyntaxKind::IDENT); res.push_ident(contextual_kw); } else { - res.push(was_joint, t.kind); + res.was_joint(was_joint); + res.push(t.kind); was_joint = true; } off += usize::from(t.len); -- 2.44.0