summary refs log tree commit diff
path: root/compiler/rustc_parse/src/parser
diff options
context:
space:
mode:
authorObei Sideg <obei.sideg@gmail.com>2022-08-03 18:45:26 +0300
committerObei Sideg <obei.sideg@gmail.com>2022-08-04 01:23:14 +0300
commitaccb8e34c599f005eaeed010fe7ddbd47760468b (patch)
treee39a81f466e249d32c32386a9f5e1e0c959a8bc5 /compiler/rustc_parse/src/parser
parent2af92bbf2ec353cd5eafb3bd5cb1ea5c1de448d3 (diff)
downloadrust-accb8e34c599f005eaeed010fe7ddbd47760468b.tar.gz
rust-accb8e34c599f005eaeed010fe7ddbd47760468b.zip
Suggest removing `let` if `let const` is used
Diffstat (limited to 'compiler/rustc_parse/src/parser')
-rw-r--r--compiler/rustc_parse/src/parser/stmt.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/compiler/rustc_parse/src/parser/stmt.rs b/compiler/rustc_parse/src/parser/stmt.rs
index 51bd9d2d386..6990d0782b7 100644
--- a/compiler/rustc_parse/src/parser/stmt.rs
+++ b/compiler/rustc_parse/src/parser/stmt.rs
@@ -247,6 +247,22 @@ impl<'a> Parser<'a> {
     /// Parses a local variable declaration.
     fn parse_local(&mut self, attrs: AttrVec) -> PResult<'a, P<Local>> {
         let lo = self.prev_token.span;
+
+        if self.token.is_keyword(kw::Const) && self.look_ahead(1, |t| t.is_ident()) {
+            self.struct_span_err(
+                lo.to(self.token.span),
+                "`const` and `let` are mutually exclusive",
+            )
+            .span_suggestion(
+                lo.to(self.token.span),
+                "remove `let`",
+                "const",
+                Applicability::MaybeIncorrect,
+            )
+            .emit();
+            self.bump();
+        }
+
         let (pat, colon) = self.parse_pat_before_ty(None, RecoverComma::Yes, "`let` bindings")?;
 
         let (err, ty) = if colon {