Skip to content

Commit

Permalink
Auto merge of rust-lang#113309 - chenyukang:yukang-fix-89640-space, r…
Browse files Browse the repository at this point in the history
…=Nilstrieb

Detect extra space in keyword for better hint

Fixes rust-lang#89640

r? `@Nilstrieb`

I met the same issue, then found out this old issue :)
  • Loading branch information
bors committed Jul 4, 2023
2 parents cd68ead + 799d291 commit 4dbc7e3
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 0 deletions.
16 changes: 16 additions & 0 deletions compiler/rustc_parse/src/parser/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Binary file modified tests/ui/parser/utf16-be-without-bom.stderr
Binary file not shown.
Binary file modified tests/ui/parser/utf16-le-without-bom.stderr
Binary file not shown.
3 changes: 3 additions & 0 deletions tests/ui/suggestions/issue-89640.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
le t x: i32 = 3; //~ ERROR expected one of
}
13 changes: 13 additions & 0 deletions tests/ui/suggestions/issue-89640.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 4dbc7e3

Please sign in to comment.