diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2022-09-16 13:07:18 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-16 13:07:18 +0200 |
| commit | 72d9e0821ede883d0a7a340cdb784b4b5977f41a (patch) | |
| tree | 5c1c8dde9bb07ef4110e4b34377b0f5a48ae57f8 /compiler/rustc_parse/src/parser | |
| parent | 8ba133fa7b7228eebdc7b3d6991ef168db45e492 (diff) | |
| parent | 4bf7d2ca913179e3d4c71871a112820624c1e379 (diff) | |
| download | rust-72d9e0821ede883d0a7a340cdb784b4b5977f41a.tar.gz rust-72d9e0821ede883d0a7a340cdb784b4b5977f41a.zip | |
Rollup merge of #101843 - chenyukang:fix-101797, r=oli-obk
Suggest associated const for incorrect use of let in traits Fixes #101797
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/item.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs index b190a7062de..e55b5ce71cd 100644 --- a/compiler/rustc_parse/src/parser/item.rs +++ b/compiler/rustc_parse/src/parser/item.rs @@ -698,11 +698,22 @@ impl<'a> Parser<'a> { let semicolon_span = self.token.span; // We have to bail or we'll potentially never make progress. let non_item_span = self.token.span; - self.consume_block(Delimiter::Brace, ConsumeClosingDelim::Yes); + let is_let = self.token.is_keyword(kw::Let); + let mut err = self.struct_span_err(non_item_span, "non-item in item list"); - err.span_label(open_brace_span, "item list starts here") - .span_label(non_item_span, "non-item starts here") - .span_label(self.prev_token.span, "item list ends here"); + self.consume_block(Delimiter::Brace, ConsumeClosingDelim::Yes); + if is_let { + err.span_suggestion( + non_item_span, + "consider using `const` instead of `let` for associated const", + "const", + Applicability::MachineApplicable, + ); + } else { + err.span_label(open_brace_span, "item list starts here") + .span_label(non_item_span, "non-item starts here") + .span_label(self.prev_token.span, "item list ends here"); + } if is_unnecessary_semicolon { err.span_suggestion( semicolon_span, |
