]> git.lizzy.rs Git - rust.git/blob - compiler/rustc_privacy/src/errors.rs
Use verbose suggestions for mutability errors
[rust.git] / compiler / rustc_privacy / src / errors.rs
1 use rustc_errors::DiagnosticArgFromDisplay;
2 use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic};
3 use rustc_span::{Span, Symbol};
4
5 #[derive(Diagnostic)]
6 #[diag(privacy_field_is_private, code = "E0451")]
7 pub struct FieldIsPrivate {
8     #[primary_span]
9     pub span: Span,
10     pub field_name: Symbol,
11     pub variant_descr: &'static str,
12     pub def_path_str: String,
13     #[subdiagnostic]
14     pub label: FieldIsPrivateLabel,
15 }
16
17 #[derive(Subdiagnostic)]
18 pub enum FieldIsPrivateLabel {
19     #[label(privacy_field_is_private_is_update_syntax_label)]
20     IsUpdateSyntax {
21         #[primary_span]
22         span: Span,
23         field_name: Symbol,
24     },
25     #[label(privacy_field_is_private_label)]
26     Other {
27         #[primary_span]
28         span: Span,
29     },
30 }
31
32 #[derive(Diagnostic)]
33 #[diag(privacy_item_is_private)]
34 pub struct ItemIsPrivate<'a> {
35     #[primary_span]
36     #[label]
37     pub span: Span,
38     pub kind: &'a str,
39     pub descr: DiagnosticArgFromDisplay<'a>,
40 }
41
42 #[derive(Diagnostic)]
43 #[diag(privacy_unnamed_item_is_private)]
44 pub struct UnnamedItemIsPrivate {
45     #[primary_span]
46     pub span: Span,
47     pub kind: &'static str,
48 }
49
50 // Duplicate of `InPublicInterface` but with a different error code, shares the same slug.
51 #[derive(Diagnostic)]
52 #[diag(privacy_in_public_interface, code = "E0445")]
53 pub struct InPublicInterfaceTraits<'a> {
54     #[primary_span]
55     #[label]
56     pub span: Span,
57     pub vis_descr: &'static str,
58     pub kind: &'a str,
59     pub descr: DiagnosticArgFromDisplay<'a>,
60     #[label(visibility_label)]
61     pub vis_span: Span,
62 }
63
64 // Duplicate of `InPublicInterfaceTraits` but with a different error code, shares the same slug.
65 #[derive(Diagnostic)]
66 #[diag(privacy_in_public_interface, code = "E0446")]
67 pub struct InPublicInterface<'a> {
68     #[primary_span]
69     #[label]
70     pub span: Span,
71     pub vis_descr: &'static str,
72     pub kind: &'a str,
73     pub descr: DiagnosticArgFromDisplay<'a>,
74     #[label(visibility_label)]
75     pub vis_span: Span,
76 }
77
78 #[derive(Diagnostic)]
79 #[diag(privacy_report_effective_visibility)]
80 pub struct ReportEffectiveVisibility {
81     #[primary_span]
82     pub span: Span,
83     pub descr: String,
84 }
85
86 #[derive(LintDiagnostic)]
87 #[diag(privacy_from_private_dep_in_public_interface)]
88 pub struct FromPrivateDependencyInPublicInterface<'a> {
89     pub kind: &'a str,
90     pub descr: DiagnosticArgFromDisplay<'a>,
91     pub krate: Symbol,
92 }
93
94 #[derive(LintDiagnostic)]
95 #[diag(privacy_private_in_public_lint)]
96 pub struct PrivateInPublicLint<'a> {
97     pub vis_descr: &'static str,
98     pub kind: &'a str,
99     pub descr: DiagnosticArgFromDisplay<'a>,
100 }