rustc_privacy/
errors.rs
1use rustc_errors::codes::*;
2use rustc_errors::{DiagArgFromDisplay, MultiSpan};
3use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic};
4use rustc_span::{Span, Symbol};
5
6#[derive(Diagnostic)]
7#[diag(privacy_field_is_private, code = E0451)]
8pub(crate) struct FieldIsPrivate {
9 #[primary_span]
10 pub span: MultiSpan,
11 #[label]
12 pub struct_span: Option<Span>,
13 pub field_names: String,
14 pub variant_descr: &'static str,
15 pub def_path_str: String,
16 #[subdiagnostic]
17 pub labels: Vec<FieldIsPrivateLabel>,
18 pub len: usize,
19}
20
21#[derive(Subdiagnostic)]
22pub(crate) enum FieldIsPrivateLabel {
23 #[label(privacy_field_is_private_is_update_syntax_label)]
24 IsUpdateSyntax {
25 #[primary_span]
26 span: Span,
27 rest_field_names: String,
28 rest_len: usize,
29 },
30 #[label(privacy_field_is_private_label)]
31 Other {
32 #[primary_span]
33 span: Span,
34 },
35}
36
37#[derive(Diagnostic)]
38#[diag(privacy_item_is_private)]
39pub(crate) struct ItemIsPrivate<'a> {
40 #[primary_span]
41 #[label]
42 pub span: Span,
43 pub kind: &'a str,
44 pub descr: DiagArgFromDisplay<'a>,
45}
46
47#[derive(Diagnostic)]
48#[diag(privacy_unnamed_item_is_private)]
49pub(crate) struct UnnamedItemIsPrivate {
50 #[primary_span]
51 pub span: Span,
52 pub kind: &'static str,
53}
54
55#[derive(Diagnostic)]
56#[diag(privacy_in_public_interface, code = E0446)]
57pub(crate) struct InPublicInterface<'a> {
58 #[primary_span]
59 #[label]
60 pub span: Span,
61 pub vis_descr: &'static str,
62 pub kind: &'a str,
63 pub descr: DiagArgFromDisplay<'a>,
64 #[label(privacy_visibility_label)]
65 pub vis_span: Span,
66}
67
68#[derive(Diagnostic)]
69#[diag(privacy_report_effective_visibility)]
70pub(crate) struct ReportEffectiveVisibility {
71 #[primary_span]
72 pub span: Span,
73 pub descr: String,
74}
75
76#[derive(LintDiagnostic)]
77#[diag(privacy_from_private_dep_in_public_interface)]
78pub(crate) struct FromPrivateDependencyInPublicInterface<'a> {
79 pub kind: &'a str,
80 pub descr: DiagArgFromDisplay<'a>,
81 pub krate: Symbol,
82}
83
84#[derive(LintDiagnostic)]
85#[diag(privacy_unnameable_types_lint)]
86pub(crate) struct UnnameableTypesLint<'a> {
87 #[label]
88 pub span: Span,
89 pub kind: &'a str,
90 pub descr: DiagArgFromDisplay<'a>,
91 pub reachable_vis: &'a str,
92 pub reexported_vis: &'a str,
93}
94
95#[derive(LintDiagnostic)]
99#[diag(privacy_private_interface_or_bounds_lint)]
100pub(crate) struct PrivateInterfacesOrBoundsLint<'a> {
101 #[label(privacy_item_label)]
102 pub item_span: Span,
103 pub item_kind: &'a str,
104 pub item_descr: DiagArgFromDisplay<'a>,
105 pub item_vis_descr: &'a str,
106 #[note(privacy_ty_note)]
107 pub ty_span: Span,
108 pub ty_kind: &'a str,
109 pub ty_descr: DiagArgFromDisplay<'a>,
110 pub ty_vis_descr: &'a str,
111}