Detect extra space in keyword for better hint

This commit is contained in:
yukang 2023-07-03 23:54:49 +08:00
parent 0ab38e95bb
commit 799d2917e7
5 changed files with 32 additions and 0 deletions

View file

@ -605,6 +605,22 @@ impl<'a> Parser<'a> {
}
}
if let TokenKind::Ident(prev, _) = &self.prev_token.kind
&& let TokenKind::Ident(cur, _) = &self.token.kind
{
let concat = Symbol::intern(&format!("{}{}", prev, cur));
let ident = Ident::new(concat, DUMMY_SP);
if ident.is_used_keyword() || ident.is_reserved() || ident.is_raw_guess() {
let span = self.prev_token.span.to(self.token.span);
err.span_suggestion_verbose(
span,
format!("consider removing the space to spell keyword `{}`", concat),
concat,
Applicability::MachineApplicable,
);
}
}
// `pub` may be used for an item or `pub(crate)`
if self.prev_token.is_ident_named(sym::public)
&& (self.token.can_begin_item()

View file

@ -0,0 +1,3 @@
fn main() {
le t x: i32 = 3; //~ ERROR expected one of
}

View file

@ -0,0 +1,13 @@
error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `t`
--> $DIR/issue-89640.rs:2:8
|
LL | le t x: i32 = 3;
| ^ expected one of 8 possible tokens
|
help: consider removing the space to spell keyword `let`
|
LL | let x: i32 = 3;
| ~~~
error: aborting due to previous error