diff options
| author | Obei Sideg <obei.sideg@gmail.com> | 2022-08-08 03:19:37 +0300 |
|---|---|---|
| committer | Obei Sideg <obei.sideg@gmail.com> | 2022-08-09 00:55:37 +0300 |
| commit | ea2df3a7982e4e011692ab0db89a9b465afda4af (patch) | |
| tree | 6f2ec506fb49c263cc975768b45d527fcc1d4a5c /compiler/rustc_parse/src/parser | |
| parent | 9ee22ff7e82a0a806de72516a6a942bad2202dca (diff) | |
| download | rust-ea2df3a7982e4e011692ab0db89a9b465afda4af.tar.gz rust-ea2df3a7982e4e011692ab0db89a9b465afda4af.zip | |
Recover from mutable variable declaration where `mut` is placed before `let`
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/stmt.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/compiler/rustc_parse/src/parser/stmt.rs b/compiler/rustc_parse/src/parser/stmt.rs index 51bd9d2d386..697d9cecfe6 100644 --- a/compiler/rustc_parse/src/parser/stmt.rs +++ b/compiler/rustc_parse/src/parser/stmt.rs @@ -55,6 +55,19 @@ impl<'a> Parser<'a> { return Ok(Some(stmt.into_inner())); } + if self.token.is_keyword(kw::Mut) && self.is_keyword_ahead(1, &[kw::Let]) { + self.bump(); + let mut_let_span = lo.to(self.token.span); + self.struct_span_err(mut_let_span, "invalid variable declaration") + .span_suggestion( + mut_let_span, + "switch the order of `mut` and `let`", + "let mut", + Applicability::MaybeIncorrect, + ) + .emit(); + } + Ok(Some(if self.token.is_keyword(kw::Let) { self.parse_local_mk(lo, attrs, capture_semi, force_collect)? } else if self.is_kw_followed_by_ident(kw::Mut) { |
