mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-11 12:56:19 +00:00
tighten up invariants
This commit is contained in:
parent
18d4737fb9
commit
57e6ef0bfb
3 changed files with 17 additions and 14 deletions
|
@ -58,18 +58,22 @@ pub(crate) fn parse_text_as<T: AstNode>(
|
|||
pub(crate) fn to_parser_tokens(text: &str, lexer_tokens: &[lexer::Token]) -> ::parser::Tokens {
|
||||
let mut off = 0;
|
||||
let mut res = parser::Tokens::default();
|
||||
let mut was_joint = true;
|
||||
let mut was_joint = false;
|
||||
for t in lexer_tokens {
|
||||
if t.kind.is_trivia() {
|
||||
was_joint = false;
|
||||
} else if t.kind == SyntaxKind::IDENT {
|
||||
let token_text = &text[off..][..usize::from(t.len)];
|
||||
let contextual_kw =
|
||||
SyntaxKind::from_contextual_keyword(token_text).unwrap_or(SyntaxKind::IDENT);
|
||||
res.push_ident(contextual_kw);
|
||||
} else {
|
||||
res.was_joint(was_joint);
|
||||
res.push(t.kind);
|
||||
if t.kind == SyntaxKind::IDENT {
|
||||
let token_text = &text[off..][..usize::from(t.len)];
|
||||
let contextual_kw =
|
||||
SyntaxKind::from_contextual_keyword(token_text).unwrap_or(SyntaxKind::IDENT);
|
||||
res.push_ident(contextual_kw);
|
||||
} else {
|
||||
if was_joint {
|
||||
res.was_joint();
|
||||
}
|
||||
res.push(t.kind);
|
||||
}
|
||||
was_joint = true;
|
||||
}
|
||||
off += usize::from(t.len);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue