Unnamed repository; edit this file 'description' to name the repository.
more orthogonal interface
Aleksey Kladov 2021-12-12
parent 6ce587b · commit 9655857
-rw-r--r--crates/parser/src/tokens.rs17
-rw-r--r--crates/syntax/src/parsing.rs3
2 files changed, 12 insertions, 8 deletions
diff --git a/crates/parser/src/tokens.rs b/crates/parser/src/tokens.rs
index 4f10956070..e1aea6acfc 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 652668e80b..5cafe70dd7 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);