@@ -4,9 +4,9 @@ use crate::errors::{
4
4
DefaultNotFollowedByItem, DocCommentDoesNotDocumentAnything, EnumStructMutuallyExclusive,
5
5
ExpectedTraitInTraitImplFoundType, ExternCrateNameWithDashes, ExternCrateNameWithDashesSugg,
6
6
ExternItemCannotBeConst, MissingConstType, MissingForInTraitImpl,
7
- MissingKeywordForItemDefinition, MissingTraitInTraitImpl, NonItemInItemList ,
8
- NonItemInItemListSub, SelfArgumentPointer, TraitAliasCannotBeAuto, TraitAliasCannotBeUnsafe,
9
- UnexpectedTokenAfterStructName, UseEmptyBlockNotSemi, VisibilityNotFollowedByItem,
7
+ MissingKeywordForItemDefinition, MissingTraitInTraitImpl, SelfArgumentPointer ,
8
+ TraitAliasCannotBeAuto, TraitAliasCannotBeUnsafe, UnexpectedTokenAfterStructName ,
9
+ UseEmptyBlockNotSemi, VisibilityNotFollowedByItem,
10
10
};
11
11
12
12
use super::diagnostics::{dummy_arg, ConsumeClosingDelim};
@@ -703,22 +703,29 @@ impl<'a> Parser<'a> {
703
703
let non_item_span = self.token.span;
704
704
let is_let = self.token.is_keyword(kw::Let);
705
705
706
+ let mut err = self.struct_span_err(non_item_span, "non-item in item list");
706
707
self.consume_block(Delimiter::Brace, ConsumeClosingDelim::Yes);
707
-
708
- self.sess.emit_err(NonItemInItemList {
709
- span: non_item_span,
710
- sub: if is_let {
711
- NonItemInItemListSub::Let { span: non_item_span }
712
- } else {
713
- NonItemInItemListSub::Other {
714
- list_start: open_brace_span,
715
- non_item: non_item_span,
716
- list_end: self.prev_token.span,
717
- }
718
- },
719
- remove_semicolon: is_unnecessary_semicolon.then_some(semicolon_span),
720
- });
721
-
708
+ if is_let {
709
+ err.span_suggestion(
710
+ non_item_span,
711
+ "consider using `const` instead of `let` for associated const",
712
+ "const",
713
+ Applicability::MachineApplicable,
714
+ );
715
+ } else {
716
+ err.span_label(open_brace_span, "item list starts here")
717
+ .span_label(non_item_span, "non-item starts here")
718
+ .span_label(self.prev_token.span, "item list ends here");
719
+ }
720
+ if is_unnecessary_semicolon {
721
+ err.span_suggestion(
722
+ semicolon_span,
723
+ "consider removing this semicolon",
724
+ "",
725
+ Applicability::MaybeIncorrect,
726
+ );
727
+ }
728
+ err.emit();
722
729
break;
723
730
}
724
731
Ok(Some(item)) => items.extend(item),
0 commit comments