@@ -624,16 +624,19 @@ pub(crate) struct LabeledLoopInBreak {
624624 #[ primary_span]
625625 pub span : Span ,
626626 #[ subdiagnostic]
627- pub sub : LabeledLoopInBreakSub ,
627+ pub sub : WrapExpressionInParentheses ,
628628}
629629
630630#[ derive( Subdiagnostic ) ]
631- #[ multipart_suggestion( parser:: suggestion, applicability = "machine-applicable" ) ]
632- pub ( crate ) struct LabeledLoopInBreakSub {
631+ #[ multipart_suggestion(
632+ parser:: sugg_wrap_expression_in_parentheses,
633+ applicability = "machine-applicable"
634+ ) ]
635+ pub ( crate ) struct WrapExpressionInParentheses {
633636 #[ suggestion_part( code = "(" ) ]
634- pub first : Span ,
637+ pub left : Span ,
635638 #[ suggestion_part( code = ")" ) ]
636- pub second : Span ,
639+ pub right : Span ,
637640}
638641
639642#[ derive( Diagnostic ) ]
@@ -781,3 +784,89 @@ pub(crate) struct MismatchedClosingDelimiter {
781784 #[ label( parser:: label_unclosed) ]
782785 pub unclosed : Option < Span > ,
783786}
787+
788+ #[ derive( Diagnostic ) ]
789+ #[ diag( parser:: incorrect_visibility_restriction, code = "E0704" ) ]
790+ #[ help]
791+ pub ( crate ) struct IncorrectVisibilityRestriction {
792+ #[ primary_span]
793+ #[ suggestion( code = "in {inner_str}" , applicability = "machine-applicable" ) ]
794+ pub span : Span ,
795+ pub inner_str : String ,
796+ }
797+
798+ #[ derive( Diagnostic ) ]
799+ #[ diag( parser:: assignment_else_not_allowed) ]
800+ pub ( crate ) struct AssignmentElseNotAllowed {
801+ #[ primary_span]
802+ pub span : Span ,
803+ }
804+
805+ #[ derive( Diagnostic ) ]
806+ #[ diag( parser:: expected_statement_after_outer_attr) ]
807+ pub ( crate ) struct ExpectedStatementAfterOuterAttr {
808+ #[ primary_span]
809+ pub span : Span ,
810+ }
811+
812+ #[ derive( Diagnostic ) ]
813+ #[ diag( parser:: doc_comment_does_not_document_anything, code = "E0585" ) ]
814+ #[ help]
815+ pub ( crate ) struct DocCommentDoesNotDocumentAnything {
816+ #[ primary_span]
817+ pub span : Span ,
818+ #[ suggestion( code = "," , applicability = "machine-applicable" ) ]
819+ pub missing_comma : Option < Span > ,
820+ }
821+
822+ #[ derive( Diagnostic ) ]
823+ #[ diag( parser:: const_let_mutually_exclusive) ]
824+ pub ( crate ) struct ConstLetMutuallyExclusive {
825+ #[ primary_span]
826+ #[ suggestion( code = "const" , applicability = "maybe-incorrect" ) ]
827+ pub span : Span ,
828+ }
829+
830+ #[ derive( Diagnostic ) ]
831+ #[ diag( parser:: invalid_expression_in_let_else) ]
832+ pub ( crate ) struct InvalidExpressionInLetElse {
833+ #[ primary_span]
834+ pub span : Span ,
835+ pub operator : & ' static str ,
836+ #[ subdiagnostic]
837+ pub sugg : WrapExpressionInParentheses ,
838+ }
839+
840+ #[ derive( Diagnostic ) ]
841+ #[ diag( parser:: invalid_curly_in_let_else) ]
842+ pub ( crate ) struct InvalidCurlyInLetElse {
843+ #[ primary_span]
844+ pub span : Span ,
845+ #[ subdiagnostic]
846+ pub sugg : WrapExpressionInParentheses ,
847+ }
848+
849+ #[ derive( Diagnostic ) ]
850+ #[ diag( parser:: compound_assignment_expression_in_let) ]
851+ #[ help]
852+ pub ( crate ) struct CompoundAssignmentExpressionInLet {
853+ #[ primary_span]
854+ #[ suggestion_short( code = "=" , applicability = "maybe-incorrect" ) ]
855+ pub span : Span ,
856+ }
857+
858+ #[ derive( Diagnostic ) ]
859+ #[ diag( parser:: suffixed_literal_in_attribute) ]
860+ #[ help]
861+ pub ( crate ) struct SuffixedLiteralInAttribute {
862+ #[ primary_span]
863+ pub span : Span ,
864+ }
865+
866+ #[ derive( Diagnostic ) ]
867+ #[ diag( parser:: invalid_meta_item) ]
868+ pub ( crate ) struct InvalidMetaItem {
869+ #[ primary_span]
870+ pub span : Span ,
871+ pub token : String ,
872+ }
0 commit comments