@@ -624,16 +624,19 @@ pub(crate) struct LabeledLoopInBreak {
624
624
#[ primary_span]
625
625
pub span : Span ,
626
626
#[ subdiagnostic]
627
- pub sub : LabeledLoopInBreakSub ,
627
+ pub sub : WrapExpressionInParentheses ,
628
628
}
629
629
630
630
#[ 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 {
633
636
#[ suggestion_part( code = "(" ) ]
634
- pub first : Span ,
637
+ pub left : Span ,
635
638
#[ suggestion_part( code = ")" ) ]
636
- pub second : Span ,
639
+ pub right : Span ,
637
640
}
638
641
639
642
#[ derive( Diagnostic ) ]
@@ -781,3 +784,89 @@ pub(crate) struct MismatchedClosingDelimiter {
781
784
#[ label( parser:: label_unclosed) ]
782
785
pub unclosed : Option < Span > ,
783
786
}
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