| use rustc_errors::codes::*; |
| use rustc_errors::{DiagArgFromDisplay, MultiSpan}; |
| use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic}; |
| use rustc_span::{Span, Symbol}; |
| |
| #[derive(Diagnostic)] |
| #[diag(privacy_field_is_private, code = E0451)] |
| pub(crate) struct FieldIsPrivate { |
| #[primary_span] |
| pub span: MultiSpan, |
| #[label] |
| pub struct_span: Option<Span>, |
| pub field_names: String, |
| pub variant_descr: &'static str, |
| pub def_path_str: String, |
| #[subdiagnostic] |
| pub labels: Vec<FieldIsPrivateLabel>, |
| pub len: usize, |
| } |
| |
| #[derive(Subdiagnostic)] |
| pub(crate) enum FieldIsPrivateLabel { |
| #[label(privacy_field_is_private_is_update_syntax_label)] |
| IsUpdateSyntax { |
| #[primary_span] |
| span: Span, |
| rest_field_names: String, |
| rest_len: usize, |
| }, |
| #[label(privacy_field_is_private_label)] |
| Other { |
| #[primary_span] |
| span: Span, |
| }, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag(privacy_item_is_private)] |
| pub(crate) struct ItemIsPrivate<'a> { |
| #[primary_span] |
| #[label] |
| pub span: Span, |
| pub kind: &'a str, |
| pub descr: DiagArgFromDisplay<'a>, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag(privacy_unnamed_item_is_private)] |
| pub(crate) struct UnnamedItemIsPrivate { |
| #[primary_span] |
| pub span: Span, |
| pub kind: &'static str, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag(privacy_in_public_interface, code = E0446)] |
| pub(crate) struct InPublicInterface<'a> { |
| #[primary_span] |
| #[label] |
| pub span: Span, |
| pub vis_descr: &'static str, |
| pub kind: &'a str, |
| pub descr: DiagArgFromDisplay<'a>, |
| #[label(privacy_visibility_label)] |
| pub vis_span: Span, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag(privacy_report_effective_visibility)] |
| pub(crate) struct ReportEffectiveVisibility { |
| #[primary_span] |
| pub span: Span, |
| pub descr: String, |
| } |
| |
| #[derive(LintDiagnostic)] |
| #[diag(privacy_from_private_dep_in_public_interface)] |
| pub(crate) struct FromPrivateDependencyInPublicInterface<'a> { |
| pub kind: &'a str, |
| pub descr: DiagArgFromDisplay<'a>, |
| pub krate: Symbol, |
| } |
| |
| #[derive(LintDiagnostic)] |
| #[diag(privacy_unnameable_types_lint)] |
| pub(crate) struct UnnameableTypesLint<'a> { |
| #[label] |
| pub span: Span, |
| pub kind: &'a str, |
| pub descr: DiagArgFromDisplay<'a>, |
| pub reachable_vis: &'a str, |
| pub reexported_vis: &'a str, |
| } |
| |
| // Used for `private_interfaces` and `private_bounds` lints. |
| // They will replace private-in-public errors and compatibility lints in future. |
| // See https://rust-lang.github.io/rfcs/2145-type-privacy.html for more details. |
| #[derive(LintDiagnostic)] |
| #[diag(privacy_private_interface_or_bounds_lint)] |
| pub(crate) struct PrivateInterfacesOrBoundsLint<'a> { |
| #[label(privacy_item_label)] |
| pub item_span: Span, |
| pub item_kind: &'a str, |
| pub item_descr: DiagArgFromDisplay<'a>, |
| pub item_vis_descr: &'a str, |
| #[note(privacy_ty_note)] |
| pub ty_span: Span, |
| pub ty_kind: &'a str, |
| pub ty_descr: DiagArgFromDisplay<'a>, |
| pub ty_vis_descr: &'a str, |
| } |