Skip to main content

rustc_lint/
lints.rs

1// ignore-tidy-filelength
2
3use std::num::NonZero;
4
5use rustc_errors::codes::*;
6use rustc_errors::{
7    Applicability, Diag, DiagArgValue, DiagMessage, DiagStyledString, ElidedLifetimeInPathSubdiag,
8    EmissionGuarantee, LintDiagnostic, MultiSpan, Subdiagnostic, SuggestionStyle,
9};
10use rustc_hir as hir;
11use rustc_hir::def_id::DefId;
12use rustc_hir::intravisit::VisitorExt;
13use rustc_macros::{LintDiagnostic, Subdiagnostic};
14use rustc_middle::ty::inhabitedness::InhabitedPredicate;
15use rustc_middle::ty::{Clause, PolyExistentialTraitRef, Ty, TyCtxt};
16use rustc_session::Session;
17use rustc_span::edition::Edition;
18use rustc_span::{Ident, Span, Symbol, sym};
19
20use crate::builtin::{InitError, ShorthandAssocTyCollector, TypeAliasBounds};
21use crate::errors::{OverruledAttributeSub, RequestedLevel};
22use crate::lifetime_syntax::LifetimeSyntaxCategories;
23use crate::{LateContext, fluent_generated as fluent};
24
25// array_into_iter.rs
26#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            ShadowedIntoIterDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ShadowedIntoIterDiag {
                        target: __binding_0,
                        edition: __binding_1,
                        suggestion: __binding_2,
                        sub: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_shadowed_into_iter);
                        ;
                        let __code_4 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("iter"))
                                            })].into_iter();
                        diag.arg("target", __binding_0);
                        diag.arg("edition", __binding_1);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::lint_use_iter_suggestion, __code_4,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
27#[diag(lint_shadowed_into_iter)]
28pub(crate) struct ShadowedIntoIterDiag {
29    pub target: &'static str,
30    pub edition: &'static str,
31    #[suggestion(lint_use_iter_suggestion, code = "iter", applicability = "machine-applicable")]
32    pub suggestion: Span,
33    #[subdiagnostic]
34    pub sub: Option<ShadowedIntoIterDiagSub>,
35}
36
37#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ShadowedIntoIterDiagSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ShadowedIntoIterDiagSub::RemoveIntoIter { span: __binding_0
                        } => {
                        let __code_5 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_remove_into_iter_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_5, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    ShadowedIntoIterDiagSub::UseExplicitIntoIter {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_6 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("IntoIterator::into_iter("))
                                });
                        let __code_7 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_6));
                        suggestions.push((__binding_1, __code_7));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_use_explicit_into_iter_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
38pub(crate) enum ShadowedIntoIterDiagSub {
39    #[suggestion(lint_remove_into_iter_suggestion, code = "", applicability = "maybe-incorrect")]
40    RemoveIntoIter {
41        #[primary_span]
42        span: Span,
43    },
44    #[multipart_suggestion(
45        lint_use_explicit_into_iter_suggestion,
46        applicability = "maybe-incorrect"
47    )]
48    UseExplicitIntoIter {
49        #[suggestion_part(code = "IntoIterator::into_iter(")]
50        start_span: Span,
51        #[suggestion_part(code = ")")]
52        end_span: Span,
53    },
54}
55
56// autorefs.rs
57#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            ImplicitUnsafeAutorefsDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ImplicitUnsafeAutorefsDiag {
                        raw_ptr_span: __binding_0,
                        raw_ptr_ty: __binding_1,
                        origin: __binding_2,
                        method: __binding_3,
                        suggestion: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_implicit_unsafe_autorefs);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("raw_ptr_ty", __binding_1);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::lint_raw_ptr);
                        diag.subdiagnostic(__binding_2);
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag.subdiagnostic(__binding_4);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
58#[diag(lint_implicit_unsafe_autorefs)]
59#[note]
60pub(crate) struct ImplicitUnsafeAutorefsDiag<'a> {
61    #[label(lint_raw_ptr)]
62    pub raw_ptr_span: Span,
63    pub raw_ptr_ty: Ty<'a>,
64    #[subdiagnostic]
65    pub origin: ImplicitUnsafeAutorefsOrigin<'a>,
66    #[subdiagnostic]
67    pub method: Option<ImplicitUnsafeAutorefsMethodNote>,
68    #[subdiagnostic]
69    pub suggestion: ImplicitUnsafeAutorefsSuggestion,
70}
71
72#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            ImplicitUnsafeAutorefsOrigin<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ImplicitUnsafeAutorefsOrigin::Autoref {
                        autoref_span: __binding_0, autoref_ty: __binding_1 } => {
                        diag.store_args();
                        diag.arg("autoref_ty", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_autoref);
                        diag.span_note(__binding_0, __message);
                        diag.restore_args();
                    }
                    ImplicitUnsafeAutorefsOrigin::OverloadedDeref => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_overloaded_deref);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
73pub(crate) enum ImplicitUnsafeAutorefsOrigin<'a> {
74    #[note(lint_autoref)]
75    Autoref {
76        #[primary_span]
77        autoref_span: Span,
78        autoref_ty: Ty<'a>,
79    },
80    #[note(lint_overloaded_deref)]
81    OverloadedDeref,
82}
83
84#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ImplicitUnsafeAutorefsMethodNote
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ImplicitUnsafeAutorefsMethodNote {
                        def_span: __binding_0, method_name: __binding_1 } => {
                        diag.store_args();
                        diag.arg("method_name", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_method_def);
                        diag.span_note(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
85#[note(lint_method_def)]
86pub(crate) struct ImplicitUnsafeAutorefsMethodNote {
87    #[primary_span]
88    pub def_span: Span,
89    pub method_name: Symbol,
90}
91
92#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ImplicitUnsafeAutorefsSuggestion
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ImplicitUnsafeAutorefsSuggestion {
                        mutbl: __binding_0,
                        deref: __binding_1,
                        start_span: __binding_2,
                        end_span: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_8 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("({1}{0}", __binding_1,
                                            __binding_0))
                                });
                        let __code_9 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_2, __code_8));
                        suggestions.push((__binding_3, __code_9));
                        diag.store_args();
                        diag.arg("mutbl", __binding_0);
                        diag.arg("deref", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
93#[multipart_suggestion(lint_suggestion, applicability = "maybe-incorrect")]
94pub(crate) struct ImplicitUnsafeAutorefsSuggestion {
95    pub mutbl: &'static str,
96    pub deref: &'static str,
97    #[suggestion_part(code = "({mutbl}{deref}")]
98    pub start_span: Span,
99    #[suggestion_part(code = ")")]
100    pub end_span: Span,
101}
102
103// builtin.rs
104#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for BuiltinWhileTrue
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinWhileTrue {
                        suggestion: __binding_0, replace: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_while_true);
                        ;
                        let __code_10 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.arg("replace", __binding_1);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_10,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
105#[diag(lint_builtin_while_true)]
106pub(crate) struct BuiltinWhileTrue {
107    #[suggestion(style = "short", code = "{replace}", applicability = "machine-applicable")]
108    pub suggestion: Span,
109    pub replace: String,
110}
111
112#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinNonShorthandFieldPatterns {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinNonShorthandFieldPatterns {
                        ident: __binding_0,
                        suggestion: __binding_1,
                        prefix: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_non_shorthand_field_patterns);
                        ;
                        let __code_11 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{1}{0}", __binding_0,
                                                        __binding_2))
                                            })].into_iter();
                        diag.arg("ident", __binding_0);
                        diag.arg("prefix", __binding_2);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_11,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
113#[diag(lint_builtin_non_shorthand_field_patterns)]
114pub(crate) struct BuiltinNonShorthandFieldPatterns {
115    pub ident: Ident,
116    #[suggestion(code = "{prefix}{ident}", applicability = "machine-applicable")]
117    pub suggestion: Span,
118    pub prefix: &'static str,
119}
120
121#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for BuiltinUnsafe {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinUnsafe::AllowInternalUnsafe => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_allow_internal_unsafe);
                        ;
                        diag
                    }
                    BuiltinUnsafe::UnsafeBlock => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unsafe_block);
                        ;
                        diag
                    }
                    BuiltinUnsafe::UnsafeExternBlock => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unsafe_extern_block);
                        ;
                        diag
                    }
                    BuiltinUnsafe::UnsafeTrait => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unsafe_trait);
                        ;
                        diag
                    }
                    BuiltinUnsafe::UnsafeImpl => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unsafe_impl);
                        ;
                        diag
                    }
                    BuiltinUnsafe::NoMangleFn => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_no_mangle_fn);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_name);
                        ;
                        diag
                    }
                    BuiltinUnsafe::ExportNameFn => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_export_name_fn);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_name);
                        ;
                        diag
                    }
                    BuiltinUnsafe::LinkSectionFn => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_link_section_fn);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_section);
                        ;
                        diag
                    }
                    BuiltinUnsafe::NoMangleStatic => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_no_mangle_static);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_name);
                        ;
                        diag
                    }
                    BuiltinUnsafe::ExportNameStatic => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_export_name_static);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_name);
                        ;
                        diag
                    }
                    BuiltinUnsafe::LinkSectionStatic => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_link_section_static);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_section);
                        ;
                        diag
                    }
                    BuiltinUnsafe::NoMangleMethod => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_no_mangle_method);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_name);
                        ;
                        diag
                    }
                    BuiltinUnsafe::ExportNameMethod => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_export_name_method);
                        diag.note(crate::fluent_generated::lint_builtin_overridden_symbol_name);
                        ;
                        diag
                    }
                    BuiltinUnsafe::DeclUnsafeFn => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_decl_unsafe_fn);
                        ;
                        diag
                    }
                    BuiltinUnsafe::DeclUnsafeMethod => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_decl_unsafe_method);
                        ;
                        diag
                    }
                    BuiltinUnsafe::ImplUnsafeMethod => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_impl_unsafe_method);
                        ;
                        diag
                    }
                    BuiltinUnsafe::GlobalAsm => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_global_asm);
                        diag.note(crate::fluent_generated::lint_builtin_global_macro_unsafety);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
122pub(crate) enum BuiltinUnsafe {
123    #[diag(lint_builtin_allow_internal_unsafe)]
124    AllowInternalUnsafe,
125    #[diag(lint_builtin_unsafe_block)]
126    UnsafeBlock,
127    #[diag(lint_builtin_unsafe_extern_block)]
128    UnsafeExternBlock,
129    #[diag(lint_builtin_unsafe_trait)]
130    UnsafeTrait,
131    #[diag(lint_builtin_unsafe_impl)]
132    UnsafeImpl,
133    #[diag(lint_builtin_no_mangle_fn)]
134    #[note(lint_builtin_overridden_symbol_name)]
135    NoMangleFn,
136    #[diag(lint_builtin_export_name_fn)]
137    #[note(lint_builtin_overridden_symbol_name)]
138    ExportNameFn,
139    #[diag(lint_builtin_link_section_fn)]
140    #[note(lint_builtin_overridden_symbol_section)]
141    LinkSectionFn,
142    #[diag(lint_builtin_no_mangle_static)]
143    #[note(lint_builtin_overridden_symbol_name)]
144    NoMangleStatic,
145    #[diag(lint_builtin_export_name_static)]
146    #[note(lint_builtin_overridden_symbol_name)]
147    ExportNameStatic,
148    #[diag(lint_builtin_link_section_static)]
149    #[note(lint_builtin_overridden_symbol_section)]
150    LinkSectionStatic,
151    #[diag(lint_builtin_no_mangle_method)]
152    #[note(lint_builtin_overridden_symbol_name)]
153    NoMangleMethod,
154    #[diag(lint_builtin_export_name_method)]
155    #[note(lint_builtin_overridden_symbol_name)]
156    ExportNameMethod,
157    #[diag(lint_builtin_decl_unsafe_fn)]
158    DeclUnsafeFn,
159    #[diag(lint_builtin_decl_unsafe_method)]
160    DeclUnsafeMethod,
161    #[diag(lint_builtin_impl_unsafe_method)]
162    ImplUnsafeMethod,
163    #[diag(lint_builtin_global_asm)]
164    #[note(lint_builtin_global_macro_unsafety)]
165    GlobalAsm,
166}
167
168#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinMissingDoc<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinMissingDoc { article: __binding_0, desc: __binding_1
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_missing_doc);
                        ;
                        diag.arg("article", __binding_0);
                        diag.arg("desc", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
169#[diag(lint_builtin_missing_doc)]
170pub(crate) struct BuiltinMissingDoc<'a> {
171    pub article: &'a str,
172    pub desc: &'a str,
173}
174
175#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinMissingCopyImpl {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinMissingCopyImpl => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_missing_copy_impl);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
176#[diag(lint_builtin_missing_copy_impl)]
177pub(crate) struct BuiltinMissingCopyImpl;
178
179pub(crate) struct BuiltinMissingDebugImpl<'a> {
180    pub tcx: TyCtxt<'a>,
181    pub def_id: DefId,
182}
183
184// Needed for def_path_str
185impl<'a> LintDiagnostic<'a, ()> for BuiltinMissingDebugImpl<'_> {
186    fn decorate_lint<'b>(self, diag: &'b mut rustc_errors::Diag<'a, ()>) {
187        diag.primary_message(fluent::lint_builtin_missing_debug_impl);
188        diag.arg("debug", self.tcx.def_path_str(self.def_id));
189    }
190}
191
192#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinAnonymousParams<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinAnonymousParams {
                        suggestion: __binding_0, ty_snip: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_anonymous_params);
                        ;
                        let __code_12 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("_: {0}", __binding_1))
                                            })].into_iter();
                        diag.arg("ty_snip", __binding_1);
                        diag.span_suggestions_with_style(__binding_0.0,
                            crate::fluent_generated::_subdiag::suggestion, __code_12,
                            __binding_0.1, rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
193#[diag(lint_builtin_anonymous_params)]
194pub(crate) struct BuiltinAnonymousParams<'a> {
195    #[suggestion(code = "_: {ty_snip}")]
196    pub suggestion: (Span, Applicability),
197    pub ty_snip: &'a str,
198}
199
200#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinUnusedDocComment<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinUnusedDocComment {
                        kind: __binding_0, label: __binding_1, sub: __binding_2 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unused_doc_comment);
                        ;
                        diag.arg("kind", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
201#[diag(lint_builtin_unused_doc_comment)]
202pub(crate) struct BuiltinUnusedDocComment<'a> {
203    pub kind: &'a str,
204    #[label]
205    pub label: Span,
206    #[subdiagnostic]
207    pub sub: BuiltinUnusedDocCommentSub,
208}
209
210#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BuiltinUnusedDocCommentSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BuiltinUnusedDocCommentSub::PlainHelp => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_plain_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                    BuiltinUnusedDocCommentSub::BlockHelp => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_block_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
211pub(crate) enum BuiltinUnusedDocCommentSub {
212    #[help(lint_plain_help)]
213    PlainHelp,
214    #[help(lint_block_help)]
215    BlockHelp,
216}
217
218#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinNoMangleGeneric {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinNoMangleGeneric { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_no_mangle_generic);
                        ;
                        let __code_13 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_13,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
219#[diag(lint_builtin_no_mangle_generic)]
220pub(crate) struct BuiltinNoMangleGeneric {
221    // Use of `#[no_mangle]` suggests FFI intent; correct
222    // fix may be to monomorphize source by hand
223    #[suggestion(style = "short", code = "", applicability = "maybe-incorrect")]
224    pub suggestion: Span,
225}
226
227#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinConstNoMangle {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinConstNoMangle { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_const_no_mangle);
                        ;
                        let __code_14 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("pub static "))
                                            })].into_iter();
                        if let Some(__binding_0) = __binding_0 {
                            diag.span_suggestions_with_style(__binding_0,
                                crate::fluent_generated::_subdiag::suggestion, __code_14,
                                rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowCode);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
228#[diag(lint_builtin_const_no_mangle)]
229pub(crate) struct BuiltinConstNoMangle {
230    #[suggestion(code = "pub static ", applicability = "machine-applicable")]
231    pub suggestion: Option<Span>,
232}
233
234#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinMutablesTransmutes {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinMutablesTransmutes => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_mutable_transmutes);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
235#[diag(lint_builtin_mutable_transmutes)]
236pub(crate) struct BuiltinMutablesTransmutes;
237
238#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinUnstableFeatures {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinUnstableFeatures => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unstable_features);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
239#[diag(lint_builtin_unstable_features)]
240pub(crate) struct BuiltinUnstableFeatures;
241
242// lint_ungated_async_fn_track_caller
243pub(crate) struct BuiltinUngatedAsyncFnTrackCaller<'a> {
244    pub label: Span,
245    pub session: &'a Session,
246}
247
248impl<'a> LintDiagnostic<'a, ()> for BuiltinUngatedAsyncFnTrackCaller<'_> {
249    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
250        diag.primary_message(fluent::lint_ungated_async_fn_track_caller);
251        diag.span_label(self.label, fluent::lint_label);
252        rustc_session::parse::add_feature_diagnostics(
253            diag,
254            self.session,
255            sym::async_fn_track_caller,
256        );
257    }
258}
259
260#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinUnreachablePub<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinUnreachablePub {
                        what: __binding_0,
                        new_vis: __binding_1,
                        suggestion: __binding_2,
                        help: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_unreachable_pub);
                        ;
                        let __code_15 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.arg("what", __binding_0);
                        diag.arg("new_vis", __binding_1);
                        diag.span_suggestions_with_style(__binding_2.0,
                            crate::fluent_generated::_subdiag::suggestion, __code_15,
                            __binding_2.1, rustc_errors::SuggestionStyle::ShowCode);
                        if __binding_3 {
                            diag.help(crate::fluent_generated::_subdiag::help);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
261#[diag(lint_builtin_unreachable_pub)]
262pub(crate) struct BuiltinUnreachablePub<'a> {
263    pub what: &'a str,
264    pub new_vis: &'a str,
265    #[suggestion(code = "{new_vis}")]
266    pub suggestion: (Span, Applicability),
267    #[help]
268    pub help: bool,
269}
270
271#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            MacroExprFragment2024 {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    MacroExprFragment2024 { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_macro_expr_fragment_specifier_2024_migration);
                        ;
                        let __code_16 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("expr_2021"))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_16,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
272#[diag(lint_macro_expr_fragment_specifier_2024_migration)]
273pub(crate) struct MacroExprFragment2024 {
274    #[suggestion(code = "expr_2021", applicability = "machine-applicable")]
275    pub suggestion: Span,
276}
277
278pub(crate) struct BuiltinTypeAliasBounds<'hir> {
279    pub in_where_clause: bool,
280    pub label: Span,
281    pub enable_feat_help: bool,
282    pub suggestions: Vec<(Span, String)>,
283    pub preds: &'hir [hir::WherePredicate<'hir>],
284    pub ty: Option<&'hir hir::Ty<'hir>>,
285}
286
287impl<'a> LintDiagnostic<'a, ()> for BuiltinTypeAliasBounds<'_> {
288    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
289        diag.primary_message(if self.in_where_clause {
290            fluent::lint_builtin_type_alias_bounds_where_clause
291        } else {
292            fluent::lint_builtin_type_alias_bounds_param_bounds
293        });
294        diag.span_label(self.label, fluent::lint_builtin_type_alias_bounds_label);
295        diag.note(fluent::lint_builtin_type_alias_bounds_limitation_note);
296        if self.enable_feat_help {
297            diag.help(fluent::lint_builtin_type_alias_bounds_enable_feat_help);
298        }
299
300        // We perform the walk in here instead of in `<TypeAliasBounds as LateLintPass>` to
301        // avoid doing throwaway work in case the lint ends up getting suppressed.
302        let mut collector = ShorthandAssocTyCollector { qselves: Vec::new() };
303        if let Some(ty) = self.ty {
304            collector.visit_ty_unambig(ty);
305        }
306
307        let affect_object_lifetime_defaults = self
308            .preds
309            .iter()
310            .filter(|pred| pred.kind.in_where_clause() == self.in_where_clause)
311            .any(|pred| TypeAliasBounds::affects_object_lifetime_defaults(pred));
312
313        // If there are any shorthand assoc tys, then the bounds can't be removed automatically.
314        // The user first needs to fully qualify the assoc tys.
315        let applicability = if !collector.qselves.is_empty() || affect_object_lifetime_defaults {
316            Applicability::MaybeIncorrect
317        } else {
318            Applicability::MachineApplicable
319        };
320
321        diag.arg("count", self.suggestions.len());
322        diag.multipart_suggestion(fluent::lint_suggestion, self.suggestions, applicability);
323
324        // Suggest fully qualifying paths of the form `T::Assoc` with `T` type param via
325        // `<T as /* Trait */>::Assoc` to remove their reliance on any type param bounds.
326        //
327        // Instead of attempting to figure out the necessary trait ref, just use a
328        // placeholder. Since we don't record type-dependent resolutions for non-body
329        // items like type aliases, we can't simply deduce the corresp. trait from
330        // the HIR path alone without rerunning parts of HIR ty lowering here
331        // (namely `probe_single_ty_param_bound_for_assoc_ty`) which is infeasible.
332        //
333        // (We could employ some simple heuristics but that's likely not worth it).
334        for qself in collector.qselves {
335            diag.multipart_suggestion(
336                fluent::lint_builtin_type_alias_bounds_qualify_assoc_tys_sugg,
337                <[_]>::into_vec(::alloc::boxed::box_new([(qself.shrink_to_lo(), "<".into()),
                (qself.shrink_to_hi(), " as /* Trait */>".into())]))vec![
338                    (qself.shrink_to_lo(), "<".into()),
339                    (qself.shrink_to_hi(), " as /* Trait */>".into()),
340                ],
341                Applicability::HasPlaceholders,
342            );
343        }
344    }
345}
346
347#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinTrivialBounds<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinTrivialBounds {
                        predicate_kind_name: __binding_0, predicate: __binding_1 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_trivial_bounds);
                        ;
                        diag.arg("predicate_kind_name", __binding_0);
                        diag.arg("predicate", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
348#[diag(lint_builtin_trivial_bounds)]
349pub(crate) struct BuiltinTrivialBounds<'a> {
350    pub predicate_kind_name: &'a str,
351    pub predicate: Clause<'a>,
352}
353
354#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinDoubleNegations {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinDoubleNegations { add_parens: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_double_negations);
                        diag.note(crate::fluent_generated::lint_note);
                        diag.note(crate::fluent_generated::lint_note_decrement);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
355#[diag(lint_builtin_double_negations)]
356#[note(lint_note)]
357#[note(lint_note_decrement)]
358pub(crate) struct BuiltinDoubleNegations {
359    #[subdiagnostic]
360    pub add_parens: BuiltinDoubleNegationsAddParens,
361}
362
363#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BuiltinDoubleNegationsAddParens {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BuiltinDoubleNegationsAddParens {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_17 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_18 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_17));
                        suggestions.push((__binding_1, __code_18));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_add_parens_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
364#[multipart_suggestion(lint_add_parens_suggestion, applicability = "maybe-incorrect")]
365pub(crate) struct BuiltinDoubleNegationsAddParens {
366    #[suggestion_part(code = "(")]
367    pub start_span: Span,
368    #[suggestion_part(code = ")")]
369    pub end_span: Span,
370}
371
372#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinEllipsisInclusiveRangePatternsLint {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinEllipsisInclusiveRangePatternsLint::Parenthesise {
                        suggestion: __binding_0, replace: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_ellipsis_inclusive_range_patterns);
                        ;
                        let __code_19 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.arg("replace", __binding_1);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_19,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                    BuiltinEllipsisInclusiveRangePatternsLint::NonParenthesise {
                        suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_ellipsis_inclusive_range_patterns);
                        ;
                        let __code_20 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("..="))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_20,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
373pub(crate) enum BuiltinEllipsisInclusiveRangePatternsLint {
374    #[diag(lint_builtin_ellipsis_inclusive_range_patterns)]
375    Parenthesise {
376        #[suggestion(code = "{replace}", applicability = "machine-applicable")]
377        suggestion: Span,
378        replace: String,
379    },
380    #[diag(lint_builtin_ellipsis_inclusive_range_patterns)]
381    NonParenthesise {
382        #[suggestion(style = "short", code = "..=", applicability = "machine-applicable")]
383        suggestion: Span,
384    },
385}
386
387#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinKeywordIdents {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinKeywordIdents {
                        kw: __binding_0,
                        next: __binding_1,
                        suggestion: __binding_2,
                        prefix: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_keyword_idents);
                        ;
                        let __code_21 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{1}r#{0}", __binding_0,
                                                        __binding_3))
                                            })].into_iter();
                        diag.arg("kw", __binding_0);
                        diag.arg("next", __binding_1);
                        diag.arg("prefix", __binding_3);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::_subdiag::suggestion, __code_21,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
388#[diag(lint_builtin_keyword_idents)]
389pub(crate) struct BuiltinKeywordIdents {
390    pub kw: Ident,
391    pub next: Edition,
392    #[suggestion(code = "{prefix}r#{kw}", applicability = "machine-applicable")]
393    pub suggestion: Span,
394    pub prefix: &'static str,
395}
396
397#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinExplicitOutlives {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinExplicitOutlives {
                        count: __binding_0, suggestion: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_explicit_outlives);
                        ;
                        diag.arg("count", __binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
398#[diag(lint_builtin_explicit_outlives)]
399pub(crate) struct BuiltinExplicitOutlives {
400    pub count: usize,
401    #[subdiagnostic]
402    pub suggestion: BuiltinExplicitOutlivesSuggestion,
403}
404
405#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BuiltinExplicitOutlivesSuggestion
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BuiltinExplicitOutlivesSuggestion {
                        spans: __binding_0, applicability: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_22 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_22.clone()));
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            __binding_1, rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
406#[multipart_suggestion(lint_suggestion)]
407pub(crate) struct BuiltinExplicitOutlivesSuggestion {
408    #[suggestion_part(code = "")]
409    pub spans: Vec<Span>,
410    #[applicability]
411    pub applicability: Applicability,
412}
413
414#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinIncompleteFeatures {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinIncompleteFeatures {
                        name: __binding_0, note: __binding_1, help: __binding_2 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_builtin_incomplete_features);
                        ;
                        diag.arg("name", __binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
415#[diag(lint_builtin_incomplete_features)]
416pub(crate) struct BuiltinIncompleteFeatures {
417    pub name: Symbol,
418    #[subdiagnostic]
419    pub note: Option<BuiltinFeatureIssueNote>,
420    #[subdiagnostic]
421    pub help: Option<BuiltinIncompleteFeaturesHelp>,
422}
423
424#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinInternalFeatures {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinInternalFeatures { name: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_internal_features);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
425#[diag(lint_builtin_internal_features)]
426#[note]
427pub(crate) struct BuiltinInternalFeatures {
428    pub name: Symbol,
429}
430
431#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BuiltinIncompleteFeaturesHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BuiltinIncompleteFeaturesHelp => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
432#[help(lint_help)]
433pub(crate) struct BuiltinIncompleteFeaturesHelp;
434
435#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BuiltinFeatureIssueNote {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BuiltinFeatureIssueNote { n: __binding_0 } => {
                        diag.store_args();
                        diag.arg("n", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_note);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
436#[note(lint_note)]
437pub(crate) struct BuiltinFeatureIssueNote {
438    pub n: NonZero<u32>,
439}
440
441pub(crate) struct BuiltinUnpermittedTypeInit<'a> {
442    pub msg: DiagMessage,
443    pub ty: Ty<'a>,
444    pub label: Span,
445    pub sub: BuiltinUnpermittedTypeInitSub,
446    pub tcx: TyCtxt<'a>,
447}
448
449impl<'a> LintDiagnostic<'a, ()> for BuiltinUnpermittedTypeInit<'_> {
450    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
451        diag.primary_message(self.msg);
452        diag.arg("ty", self.ty);
453        diag.span_label(self.label, fluent::lint_builtin_unpermitted_type_init_label);
454        if let InhabitedPredicate::True = self.ty.inhabited_predicate(self.tcx) {
455            // Only suggest late `MaybeUninit::assume_init` initialization if the type is inhabited.
456            diag.span_label(
457                self.label,
458                fluent::lint_builtin_unpermitted_type_init_label_suggestion,
459            );
460        }
461        self.sub.add_to_diag(diag);
462    }
463}
464
465// FIXME(davidtwco): make translatable
466pub(crate) struct BuiltinUnpermittedTypeInitSub {
467    pub err: InitError,
468}
469
470impl Subdiagnostic for BuiltinUnpermittedTypeInitSub {
471    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
472        let mut err = self.err;
473        loop {
474            if let Some(span) = err.span {
475                diag.span_note(span, err.message);
476            } else {
477                diag.note(err.message);
478            }
479            if let Some(e) = err.nested {
480                err = *e;
481            } else {
482                break;
483            }
484        }
485    }
486}
487
488#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinClashingExtern<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinClashingExtern::SameName {
                        this: __binding_0,
                        orig: __binding_1,
                        previous_decl_label: __binding_2,
                        mismatch_label: __binding_3,
                        sub: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_clashing_extern_same_name);
                        ;
                        diag.arg("this", __binding_0);
                        diag.arg("orig", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::lint_previous_decl_label);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::lint_mismatch_label);
                        diag.subdiagnostic(__binding_4);
                        diag
                    }
                    BuiltinClashingExtern::DiffName {
                        this: __binding_0,
                        orig: __binding_1,
                        previous_decl_label: __binding_2,
                        mismatch_label: __binding_3,
                        sub: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_clashing_extern_diff_name);
                        ;
                        diag.arg("this", __binding_0);
                        diag.arg("orig", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::lint_previous_decl_label);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::lint_mismatch_label);
                        diag.subdiagnostic(__binding_4);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
489pub(crate) enum BuiltinClashingExtern<'a> {
490    #[diag(lint_builtin_clashing_extern_same_name)]
491    SameName {
492        this: Symbol,
493        orig: Symbol,
494        #[label(lint_previous_decl_label)]
495        previous_decl_label: Span,
496        #[label(lint_mismatch_label)]
497        mismatch_label: Span,
498        #[subdiagnostic]
499        sub: BuiltinClashingExternSub<'a>,
500    },
501    #[diag(lint_builtin_clashing_extern_diff_name)]
502    DiffName {
503        this: Symbol,
504        orig: Symbol,
505        #[label(lint_previous_decl_label)]
506        previous_decl_label: Span,
507        #[label(lint_mismatch_label)]
508        mismatch_label: Span,
509        #[subdiagnostic]
510        sub: BuiltinClashingExternSub<'a>,
511    },
512}
513
514// FIXME(davidtwco): translatable expected/found
515pub(crate) struct BuiltinClashingExternSub<'a> {
516    pub tcx: TyCtxt<'a>,
517    pub expected: Ty<'a>,
518    pub found: Ty<'a>,
519}
520
521impl Subdiagnostic for BuiltinClashingExternSub<'_> {
522    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
523        let mut expected_str = DiagStyledString::new();
524        expected_str.push(self.expected.fn_sig(self.tcx).to_string(), false);
525        let mut found_str = DiagStyledString::new();
526        found_str.push(self.found.fn_sig(self.tcx).to_string(), true);
527        diag.note_expected_found("", expected_str, "", found_str);
528    }
529}
530
531#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinDerefNullptr {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinDerefNullptr { label: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_deref_nullptr);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
532#[diag(lint_builtin_deref_nullptr)]
533pub(crate) struct BuiltinDerefNullptr {
534    #[label]
535    pub label: Span,
536}
537
538// FIXME: migrate fluent::lint::builtin_asm_labels
539
540#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BuiltinSpecialModuleNameUsed {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BuiltinSpecialModuleNameUsed::Lib => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_special_module_name_used_lib);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                    BuiltinSpecialModuleNameUsed::Main => {
                        diag.primary_message(crate::fluent_generated::lint_builtin_special_module_name_used_main);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
541pub(crate) enum BuiltinSpecialModuleNameUsed {
542    #[diag(lint_builtin_special_module_name_used_lib)]
543    #[note]
544    #[help]
545    Lib,
546    #[diag(lint_builtin_special_module_name_used_main)]
547    #[note]
548    Main,
549}
550
551// deref_into_dyn_supertrait.rs
552#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            SupertraitAsDerefTarget<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SupertraitAsDerefTarget {
                        self_ty: __binding_0,
                        supertrait_principal: __binding_1,
                        target_principal: __binding_2,
                        label: __binding_3,
                        label2: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_supertrait_as_deref_target);
                        ;
                        diag.arg("self_ty", __binding_0);
                        diag.arg("supertrait_principal", __binding_1);
                        diag.arg("target_principal", __binding_2);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
553#[diag(lint_supertrait_as_deref_target)]
554pub(crate) struct SupertraitAsDerefTarget<'a> {
555    pub self_ty: Ty<'a>,
556    pub supertrait_principal: PolyExistentialTraitRef<'a>,
557    pub target_principal: PolyExistentialTraitRef<'a>,
558    #[label]
559    pub label: Span,
560    #[subdiagnostic]
561    pub label2: Option<SupertraitAsDerefTargetLabel>,
562}
563
564#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for SupertraitAsDerefTargetLabel {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    SupertraitAsDerefTargetLabel { label: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label2);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
565#[label(lint_label2)]
566pub(crate) struct SupertraitAsDerefTargetLabel {
567    #[primary_span]
568    pub label: Span,
569}
570
571// enum_intrinsics_non_enums.rs
572#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            EnumIntrinsicsMemDiscriminate<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    EnumIntrinsicsMemDiscriminate {
                        ty_param: __binding_0, note: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_enum_intrinsics_mem_discriminant);
                        ;
                        diag.arg("ty_param", __binding_0);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
573#[diag(lint_enum_intrinsics_mem_discriminant)]
574pub(crate) struct EnumIntrinsicsMemDiscriminate<'a> {
575    pub ty_param: Ty<'a>,
576    #[note]
577    pub note: Span,
578}
579
580#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            EnumIntrinsicsMemVariant<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    EnumIntrinsicsMemVariant { ty_param: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_enum_intrinsics_mem_variant);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("ty_param", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
581#[diag(lint_enum_intrinsics_mem_variant)]
582#[note]
583pub(crate) struct EnumIntrinsicsMemVariant<'a> {
584    pub ty_param: Ty<'a>,
585}
586
587// expect.rs
588#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for Expectation {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    Expectation { rationale: __binding_0, note: __binding_1 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_expectation);
                        ;
                        if let Some(__binding_0) = __binding_0 {
                            diag.subdiagnostic(__binding_0);
                        }
                        if __binding_1 {
                            diag.note(crate::fluent_generated::_subdiag::note);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
589#[diag(lint_expectation)]
590pub(crate) struct Expectation {
591    #[subdiagnostic]
592    pub rationale: Option<ExpectationNote>,
593    #[note]
594    pub note: bool,
595}
596
597#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectationNote {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectationNote { rationale: __binding_0 } => {
                        diag.store_args();
                        diag.arg("rationale", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_rationale);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
598#[note(lint_rationale)]
599pub(crate) struct ExpectationNote {
600    pub rationale: Symbol,
601}
602
603// ptr_nulls.rs
604#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UselessPtrNullChecksDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UselessPtrNullChecksDiag::FnPtr {
                        orig_ty: __binding_0, label: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_useless_ptr_null_checks_fn_ptr);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("orig_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UselessPtrNullChecksDiag::Ref {
                        orig_ty: __binding_0, label: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_useless_ptr_null_checks_ref);
                        ;
                        diag.arg("orig_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UselessPtrNullChecksDiag::FnRet { fn_name: __binding_0 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_useless_ptr_null_checks_fn_ret);
                        ;
                        diag.arg("fn_name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
605pub(crate) enum UselessPtrNullChecksDiag<'a> {
606    #[diag(lint_useless_ptr_null_checks_fn_ptr)]
607    #[help]
608    FnPtr {
609        orig_ty: Ty<'a>,
610        #[label]
611        label: Span,
612    },
613    #[diag(lint_useless_ptr_null_checks_ref)]
614    Ref {
615        orig_ty: Ty<'a>,
616        #[label]
617        label: Span,
618    },
619    #[diag(lint_useless_ptr_null_checks_fn_ret)]
620    FnRet { fn_name: Ident },
621}
622
623#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            InvalidNullArgumentsDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidNullArgumentsDiag::NullPtrInline {
                        null_span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_null_arguments);
                        diag.help(crate::fluent_generated::lint_doc);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::lint_origin);
                        diag
                    }
                    InvalidNullArgumentsDiag::NullPtrThroughBinding {
                        null_span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_null_arguments);
                        diag.help(crate::fluent_generated::lint_doc);
                        ;
                        diag.span_note(__binding_0,
                            crate::fluent_generated::lint_origin);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
624pub(crate) enum InvalidNullArgumentsDiag {
625    #[diag(lint_invalid_null_arguments)]
626    #[help(lint_doc)]
627    NullPtrInline {
628        #[label(lint_origin)]
629        null_span: Span,
630    },
631    #[diag(lint_invalid_null_arguments)]
632    #[help(lint_doc)]
633    NullPtrThroughBinding {
634        #[note(lint_origin)]
635        null_span: Span,
636    },
637}
638
639// for_loops_over_fallibles.rs
640#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            ForLoopsOverFalliblesDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ForLoopsOverFalliblesDiag {
                        article: __binding_0,
                        ref_prefix: __binding_1,
                        ty: __binding_2,
                        sub: __binding_3,
                        question_mark: __binding_4,
                        suggestion: __binding_5 } => {
                        diag.primary_message(crate::fluent_generated::lint_for_loops_over_fallibles);
                        ;
                        diag.arg("article", __binding_0);
                        diag.arg("ref_prefix", __binding_1);
                        diag.arg("ty", __binding_2);
                        diag.subdiagnostic(__binding_3);
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        diag.subdiagnostic(__binding_5);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
641#[diag(lint_for_loops_over_fallibles)]
642pub(crate) struct ForLoopsOverFalliblesDiag<'a> {
643    pub article: &'static str,
644    pub ref_prefix: &'static str,
645    pub ty: &'static str,
646    #[subdiagnostic]
647    pub sub: ForLoopsOverFalliblesLoopSub<'a>,
648    #[subdiagnostic]
649    pub question_mark: Option<ForLoopsOverFalliblesQuestionMark>,
650    #[subdiagnostic]
651    pub suggestion: ForLoopsOverFalliblesSuggestion<'a>,
652}
653
654#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            ForLoopsOverFalliblesLoopSub<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ForLoopsOverFalliblesLoopSub::RemoveNext {
                        suggestion: __binding_0, recv_snip: __binding_1 } => {
                        let __code_23 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(".by_ref()"))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("recv_snip", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_remove_next);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_23, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    ForLoopsOverFalliblesLoopSub::UseWhileLet {
                        start_span: __binding_0,
                        end_span: __binding_1,
                        var: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_24 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("while let {0}(",
                                            __binding_2))
                                });
                        let __code_25 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(") = "))
                                });
                        suggestions.push((__binding_0, __code_24));
                        suggestions.push((__binding_1, __code_25));
                        diag.store_args();
                        diag.arg("var", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_use_while_let);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
655pub(crate) enum ForLoopsOverFalliblesLoopSub<'a> {
656    #[suggestion(lint_remove_next, code = ".by_ref()", applicability = "maybe-incorrect")]
657    RemoveNext {
658        #[primary_span]
659        suggestion: Span,
660        recv_snip: String,
661    },
662    #[multipart_suggestion(lint_use_while_let, applicability = "maybe-incorrect")]
663    UseWhileLet {
664        #[suggestion_part(code = "while let {var}(")]
665        start_span: Span,
666        #[suggestion_part(code = ") = ")]
667        end_span: Span,
668        var: &'a str,
669    },
670}
671
672#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ForLoopsOverFalliblesQuestionMark
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ForLoopsOverFalliblesQuestionMark { suggestion: __binding_0
                        } => {
                        let __code_26 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("?"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_use_question_mark);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_26, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
673#[suggestion(lint_use_question_mark, code = "?", applicability = "maybe-incorrect")]
674pub(crate) struct ForLoopsOverFalliblesQuestionMark {
675    #[primary_span]
676    pub suggestion: Span,
677}
678
679#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            ForLoopsOverFalliblesSuggestion<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ForLoopsOverFalliblesSuggestion {
                        var: __binding_0,
                        start_span: __binding_1,
                        end_span: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_27 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("if let {0}(",
                                            __binding_0))
                                });
                        let __code_28 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(") = "))
                                });
                        suggestions.push((__binding_1, __code_27));
                        suggestions.push((__binding_2, __code_28));
                        diag.store_args();
                        diag.arg("var", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
680#[multipart_suggestion(lint_suggestion, applicability = "maybe-incorrect")]
681pub(crate) struct ForLoopsOverFalliblesSuggestion<'a> {
682    pub var: &'a str,
683    #[suggestion_part(code = "if let {var}(")]
684    pub start_span: Span,
685    #[suggestion_part(code = ") = ")]
686    pub end_span: Span,
687}
688
689#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UseLetUnderscoreIgnoreSuggestion
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UseLetUnderscoreIgnoreSuggestion::Note => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_use_let_underscore_ignore_suggestion);
                        diag.note(__message);
                        diag.restore_args();
                    }
                    UseLetUnderscoreIgnoreSuggestion::Suggestion {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_29 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("let _ = "))
                                });
                        let __code_30 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_29));
                        suggestions.push((__binding_1, __code_30));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_use_let_underscore_ignore_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
690pub(crate) enum UseLetUnderscoreIgnoreSuggestion {
691    #[note(lint_use_let_underscore_ignore_suggestion)]
692    Note,
693    #[multipart_suggestion(
694        lint_use_let_underscore_ignore_suggestion,
695        style = "verbose",
696        applicability = "maybe-incorrect"
697    )]
698    Suggestion {
699        #[suggestion_part(code = "let _ = ")]
700        start_span: Span,
701        #[suggestion_part(code = "")]
702        end_span: Span,
703    },
704}
705
706// drop_forget_useless.rs
707#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            DropRefDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DropRefDiag {
                        arg_ty: __binding_0, label: __binding_1, sugg: __binding_2 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_dropping_references);
                        ;
                        diag.arg("arg_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
708#[diag(lint_dropping_references)]
709pub(crate) struct DropRefDiag<'a> {
710    pub arg_ty: Ty<'a>,
711    #[label]
712    pub label: Span,
713    #[subdiagnostic]
714    pub sugg: UseLetUnderscoreIgnoreSuggestion,
715}
716
717#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            DropCopyDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DropCopyDiag {
                        arg_ty: __binding_0, label: __binding_1, sugg: __binding_2 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_dropping_copy_types);
                        ;
                        diag.arg("arg_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
718#[diag(lint_dropping_copy_types)]
719pub(crate) struct DropCopyDiag<'a> {
720    pub arg_ty: Ty<'a>,
721    #[label]
722    pub label: Span,
723    #[subdiagnostic]
724    pub sugg: UseLetUnderscoreIgnoreSuggestion,
725}
726
727#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            ForgetRefDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ForgetRefDiag {
                        arg_ty: __binding_0, label: __binding_1, sugg: __binding_2 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_forgetting_references);
                        ;
                        diag.arg("arg_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
728#[diag(lint_forgetting_references)]
729pub(crate) struct ForgetRefDiag<'a> {
730    pub arg_ty: Ty<'a>,
731    #[label]
732    pub label: Span,
733    #[subdiagnostic]
734    pub sugg: UseLetUnderscoreIgnoreSuggestion,
735}
736
737#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            ForgetCopyDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ForgetCopyDiag {
                        arg_ty: __binding_0, label: __binding_1, sugg: __binding_2 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_forgetting_copy_types);
                        ;
                        diag.arg("arg_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
738#[diag(lint_forgetting_copy_types)]
739pub(crate) struct ForgetCopyDiag<'a> {
740    pub arg_ty: Ty<'a>,
741    #[label]
742    pub label: Span,
743    #[subdiagnostic]
744    pub sugg: UseLetUnderscoreIgnoreSuggestion,
745}
746
747#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UndroppedManuallyDropsDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UndroppedManuallyDropsDiag {
                        arg_ty: __binding_0,
                        label: __binding_1,
                        suggestion: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_undropped_manually_drops);
                        ;
                        diag.arg("arg_ty", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
748#[diag(lint_undropped_manually_drops)]
749pub(crate) struct UndroppedManuallyDropsDiag<'a> {
750    pub arg_ty: Ty<'a>,
751    #[label]
752    pub label: Span,
753    #[subdiagnostic]
754    pub suggestion: UndroppedManuallyDropsSuggestion,
755}
756
757#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UndroppedManuallyDropsSuggestion
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UndroppedManuallyDropsSuggestion {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_31 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("std::mem::ManuallyDrop::into_inner("))
                                });
                        let __code_32 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_31));
                        suggestions.push((__binding_1, __code_32));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
758#[multipart_suggestion(lint_suggestion, applicability = "machine-applicable")]
759pub(crate) struct UndroppedManuallyDropsSuggestion {
760    #[suggestion_part(code = "std::mem::ManuallyDrop::into_inner(")]
761    pub start_span: Span,
762    #[suggestion_part(code = ")")]
763    pub end_span: Span,
764}
765
766// invalid_from_utf8.rs
767#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            InvalidFromUtf8Diag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidFromUtf8Diag::Unchecked {
                        method: __binding_0,
                        valid_up_to: __binding_1,
                        label: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_from_utf8_unchecked);
                        ;
                        diag.arg("method", __binding_0);
                        diag.arg("valid_up_to", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    InvalidFromUtf8Diag::Checked {
                        method: __binding_0,
                        valid_up_to: __binding_1,
                        label: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_from_utf8_checked);
                        ;
                        diag.arg("method", __binding_0);
                        diag.arg("valid_up_to", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
768pub(crate) enum InvalidFromUtf8Diag {
769    #[diag(lint_invalid_from_utf8_unchecked)]
770    Unchecked {
771        method: String,
772        valid_up_to: usize,
773        #[label]
774        label: Span,
775    },
776    #[diag(lint_invalid_from_utf8_checked)]
777    Checked {
778        method: String,
779        valid_up_to: usize,
780        #[label]
781        label: Span,
782    },
783}
784
785// interior_mutable_consts.rs
786#[derive(const _: () =
    {
        impl<'__a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            ConstItemInteriorMutationsDiag<'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ConstItemInteriorMutationsDiag {
                        method_name: __binding_0,
                        const_name: __binding_1,
                        const_ty: __binding_2,
                        receiver_span: __binding_3,
                        sugg_static: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_const_item_interior_mutations);
                        diag.note(crate::fluent_generated::lint_temporary);
                        diag.note(crate::fluent_generated::lint_never_original);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("method_name", __binding_0);
                        diag.arg("const_name", __binding_1);
                        diag.arg("const_ty", __binding_2);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
787#[diag(lint_const_item_interior_mutations)]
788#[note(lint_temporary)]
789#[note(lint_never_original)]
790#[help]
791pub(crate) struct ConstItemInteriorMutationsDiag<'tcx> {
792    pub method_name: Ident,
793    pub const_name: Ident,
794    pub const_ty: Ty<'tcx>,
795    #[label]
796    pub receiver_span: Span,
797    #[subdiagnostic]
798    pub sugg_static: Option<ConstItemInteriorMutationsSuggestionStatic>,
799}
800
801#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            ConstItemInteriorMutationsSuggestionStatic {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ConstItemInteriorMutationsSuggestionStatic::Spanful {
                        const_: __binding_0, before: __binding_1 } => {
                        let __code_33 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}static ",
                                                        __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("before", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_static);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_33, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    ConstItemInteriorMutationsSuggestionStatic::Spanless => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_static);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
802pub(crate) enum ConstItemInteriorMutationsSuggestionStatic {
803    #[suggestion(
804        lint_suggestion_static,
805        code = "{before}static ",
806        style = "verbose",
807        applicability = "maybe-incorrect"
808    )]
809    Spanful {
810        #[primary_span]
811        const_: Span,
812        before: &'static str,
813    },
814    #[help(lint_suggestion_static)]
815    Spanless,
816}
817
818// reference_casting.rs
819#[derive(const _: () =
    {
        impl<'__a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            InvalidReferenceCastingDiag<'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidReferenceCastingDiag::BorrowAsMut {
                        orig_cast: __binding_0,
                        ty_has_interior_mutability: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_reference_casting_borrow_as_mut);
                        diag.note(crate::fluent_generated::lint_invalid_reference_casting_note_book);
                        ;
                        if let Some(__binding_0) = __binding_0 {
                            diag.span_label(__binding_0,
                                crate::fluent_generated::_subdiag::label);
                        }
                        if __binding_1 {
                            diag.note(crate::fluent_generated::lint_invalid_reference_casting_note_ty_has_interior_mutability);
                        }
                        diag
                    }
                    InvalidReferenceCastingDiag::AssignToRef {
                        orig_cast: __binding_0,
                        ty_has_interior_mutability: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_reference_casting_assign_to_ref);
                        diag.note(crate::fluent_generated::lint_invalid_reference_casting_note_book);
                        ;
                        if let Some(__binding_0) = __binding_0 {
                            diag.span_label(__binding_0,
                                crate::fluent_generated::_subdiag::label);
                        }
                        if __binding_1 {
                            diag.note(crate::fluent_generated::lint_invalid_reference_casting_note_ty_has_interior_mutability);
                        }
                        diag
                    }
                    InvalidReferenceCastingDiag::BiggerLayout {
                        orig_cast: __binding_0,
                        alloc: __binding_1,
                        from_ty: __binding_2,
                        from_size: __binding_3,
                        to_ty: __binding_4,
                        to_size: __binding_5 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_reference_casting_bigger_layout);
                        diag.note(crate::fluent_generated::lint_layout);
                        ;
                        diag.arg("from_ty", __binding_2);
                        diag.arg("from_size", __binding_3);
                        diag.arg("to_ty", __binding_4);
                        diag.arg("to_size", __binding_5);
                        if let Some(__binding_0) = __binding_0 {
                            diag.span_label(__binding_0,
                                crate::fluent_generated::_subdiag::label);
                        }
                        diag.span_label(__binding_1,
                            crate::fluent_generated::lint_alloc);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
820pub(crate) enum InvalidReferenceCastingDiag<'tcx> {
821    #[diag(lint_invalid_reference_casting_borrow_as_mut)]
822    #[note(lint_invalid_reference_casting_note_book)]
823    BorrowAsMut {
824        #[label]
825        orig_cast: Option<Span>,
826        #[note(lint_invalid_reference_casting_note_ty_has_interior_mutability)]
827        ty_has_interior_mutability: bool,
828    },
829    #[diag(lint_invalid_reference_casting_assign_to_ref)]
830    #[note(lint_invalid_reference_casting_note_book)]
831    AssignToRef {
832        #[label]
833        orig_cast: Option<Span>,
834        #[note(lint_invalid_reference_casting_note_ty_has_interior_mutability)]
835        ty_has_interior_mutability: bool,
836    },
837    #[diag(lint_invalid_reference_casting_bigger_layout)]
838    #[note(lint_layout)]
839    BiggerLayout {
840        #[label]
841        orig_cast: Option<Span>,
842        #[label(lint_alloc)]
843        alloc: Span,
844        from_ty: Ty<'tcx>,
845        from_size: u64,
846        to_ty: Ty<'tcx>,
847        to_size: u64,
848    },
849}
850
851// map_unit_fn.rs
852#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for MappingToUnit {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    MappingToUnit {
                        function_label: __binding_0,
                        argument_label: __binding_1,
                        map_label: __binding_2,
                        suggestion: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_map_unit_fn);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        let __code_34 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("for_each"))
                                            })].into_iter();
                        diag.span_label(__binding_0,
                            crate::fluent_generated::lint_function_label);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::lint_argument_label);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::lint_map_label);
                        diag.span_suggestions_with_style(__binding_3,
                            crate::fluent_generated::_subdiag::suggestion, __code_34,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
853#[diag(lint_map_unit_fn)]
854#[note]
855pub(crate) struct MappingToUnit {
856    #[label(lint_function_label)]
857    pub function_label: Span,
858    #[label(lint_argument_label)]
859    pub argument_label: Span,
860    #[label(lint_map_label)]
861    pub map_label: Span,
862    #[suggestion(style = "verbose", code = "for_each", applicability = "maybe-incorrect")]
863    pub suggestion: Span,
864}
865
866// internal.rs
867#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            DefaultHashTypesDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DefaultHashTypesDiag {
                        preferred: __binding_0, used: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_default_hash_types);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("preferred", __binding_0);
                        diag.arg("used", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
868#[diag(lint_default_hash_types)]
869#[note]
870pub(crate) struct DefaultHashTypesDiag<'a> {
871    pub preferred: &'a str,
872    pub used: Symbol,
873}
874
875#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for QueryInstability
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    QueryInstability { query: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_query_instability);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("query", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
876#[diag(lint_query_instability)]
877#[note]
878pub(crate) struct QueryInstability {
879    pub query: Symbol,
880}
881
882#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for QueryUntracked {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    QueryUntracked { method: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_query_untracked);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("method", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
883#[diag(lint_query_untracked)]
884#[note]
885pub(crate) struct QueryUntracked {
886    pub method: Symbol,
887}
888
889#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            SpanUseEqCtxtDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SpanUseEqCtxtDiag => {
                        diag.primary_message(crate::fluent_generated::lint_span_use_eq_ctxt);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
890#[diag(lint_span_use_eq_ctxt)]
891pub(crate) struct SpanUseEqCtxtDiag;
892
893#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            SymbolInternStringLiteralDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SymbolInternStringLiteralDiag => {
                        diag.primary_message(crate::fluent_generated::lint_symbol_intern_string_literal);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
894#[diag(lint_symbol_intern_string_literal)]
895#[help]
896pub(crate) struct SymbolInternStringLiteralDiag;
897
898#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for TykindKind {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TykindKind { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_tykind_kind);
                        ;
                        let __code_35 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("ty"))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_35,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
899#[diag(lint_tykind_kind)]
900pub(crate) struct TykindKind {
901    #[suggestion(code = "ty", applicability = "maybe-incorrect")]
902    pub suggestion: Span,
903}
904
905#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for TykindDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TykindDiag => {
                        diag.primary_message(crate::fluent_generated::lint_tykind);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
906#[diag(lint_tykind)]
907#[help]
908pub(crate) struct TykindDiag;
909
910#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for TyQualified {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TyQualified { ty: __binding_0, suggestion: __binding_1 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_ty_qualified);
                        ;
                        let __code_36 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_0))
                                            })].into_iter();
                        diag.arg("ty", __binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_36,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
911#[diag(lint_ty_qualified)]
912pub(crate) struct TyQualified {
913    pub ty: String,
914    #[suggestion(code = "{ty}", applicability = "maybe-incorrect")]
915    pub suggestion: Span,
916}
917
918#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            TypeIrInherentUsage {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TypeIrInherentUsage => {
                        diag.primary_message(crate::fluent_generated::lint_type_ir_inherent_usage);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
919#[diag(lint_type_ir_inherent_usage)]
920#[note]
921pub(crate) struct TypeIrInherentUsage;
922
923#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for TypeIrTraitUsage
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TypeIrTraitUsage => {
                        diag.primary_message(crate::fluent_generated::lint_type_ir_trait_usage);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
924#[diag(lint_type_ir_trait_usage)]
925#[note]
926pub(crate) struct TypeIrTraitUsage;
927
928#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for TypeIrDirectUse
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TypeIrDirectUse => {
                        diag.primary_message(crate::fluent_generated::lint_type_ir_direct_use);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
929#[diag(lint_type_ir_direct_use)]
930#[note]
931pub(crate) struct TypeIrDirectUse;
932
933#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            NonGlobImportTypeIrInherent {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NonGlobImportTypeIrInherent {
                        suggestion: __binding_0, snippet: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_non_glob_import_type_ir_inherent);
                        ;
                        let __code_37 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.arg("snippet", __binding_1);
                        if let Some(__binding_0) = __binding_0 {
                            diag.span_suggestions_with_style(__binding_0,
                                crate::fluent_generated::_subdiag::suggestion, __code_37,
                                rustc_errors::Applicability::MaybeIncorrect,
                                rustc_errors::SuggestionStyle::ShowCode);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
934#[diag(lint_non_glob_import_type_ir_inherent)]
935pub(crate) struct NonGlobImportTypeIrInherent {
936    #[suggestion(code = "{snippet}", applicability = "maybe-incorrect")]
937    pub suggestion: Option<Span>,
938    pub snippet: &'static str,
939}
940
941#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for LintPassByHand {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    LintPassByHand => {
                        diag.primary_message(crate::fluent_generated::lint_lintpass_by_hand);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
942#[diag(lint_lintpass_by_hand)]
943#[help]
944pub(crate) struct LintPassByHand;
945
946#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            BadOptAccessDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BadOptAccessDiag { msg: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_bad_opt_access);
                        ;
                        diag.arg("msg", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
947#[diag(lint_bad_opt_access)]
948pub(crate) struct BadOptAccessDiag<'a> {
949    pub msg: &'a str,
950}
951
952#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            ImplicitSysrootCrateImportDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ImplicitSysrootCrateImportDiag { name: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_implicit_sysroot_crate_import);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
953#[diag(lint_implicit_sysroot_crate_import)]
954#[help]
955pub(crate) struct ImplicitSysrootCrateImportDiag<'a> {
956    pub name: &'a str,
957}
958
959// let_underscore.rs
960#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for NonBindingLet {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NonBindingLet::SyncLock { pat: __binding_0, sub: __binding_1
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_non_binding_let_on_sync_lock);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                    NonBindingLet::DropType { sub: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_non_binding_let_on_drop_type);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
961pub(crate) enum NonBindingLet {
962    #[diag(lint_non_binding_let_on_sync_lock)]
963    SyncLock {
964        #[label]
965        pat: Span,
966        #[subdiagnostic]
967        sub: NonBindingLetSub,
968    },
969    #[diag(lint_non_binding_let_on_drop_type)]
970    DropType {
971        #[subdiagnostic]
972        sub: NonBindingLetSub,
973    },
974}
975
976pub(crate) struct NonBindingLetSub {
977    pub suggestion: Span,
978    pub drop_fn_start_end: Option<(Span, Span)>,
979    pub is_assign_desugar: bool,
980}
981
982impl Subdiagnostic for NonBindingLetSub {
983    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
984        let can_suggest_binding = self.drop_fn_start_end.is_some() || !self.is_assign_desugar;
985
986        if can_suggest_binding {
987            let prefix = if self.is_assign_desugar { "let " } else { "" };
988            diag.span_suggestion_verbose(
989                self.suggestion,
990                fluent::lint_non_binding_let_suggestion,
991                ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("{0}_unused", prefix))
    })format!("{prefix}_unused"),
992                Applicability::MachineApplicable,
993            );
994        } else {
995            diag.span_help(self.suggestion, fluent::lint_non_binding_let_suggestion);
996        }
997        if let Some(drop_fn_start_end) = self.drop_fn_start_end {
998            diag.multipart_suggestion(
999                fluent::lint_non_binding_let_multi_suggestion,
1000                <[_]>::into_vec(::alloc::boxed::box_new([(drop_fn_start_end.0,
                    "drop(".to_string()),
                (drop_fn_start_end.1, ")".to_string())]))vec![
1001                    (drop_fn_start_end.0, "drop(".to_string()),
1002                    (drop_fn_start_end.1, ")".to_string()),
1003                ],
1004                Applicability::MachineApplicable,
1005            );
1006        } else {
1007            diag.help(fluent::lint_non_binding_let_multi_drop_fn);
1008        }
1009    }
1010}
1011
1012// levels.rs
1013#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            OverruledAttributeLint<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    OverruledAttributeLint {
                        overruled: __binding_0,
                        lint_level: __binding_1,
                        lint_source: __binding_2,
                        sub: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_overruled_attribute);
                        ;
                        diag.arg("lint_level", __binding_1);
                        diag.arg("lint_source", __binding_2);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1014#[diag(lint_overruled_attribute)]
1015pub(crate) struct OverruledAttributeLint<'a> {
1016    #[label]
1017    pub overruled: Span,
1018    pub lint_level: &'a str,
1019    pub lint_source: Symbol,
1020    #[subdiagnostic]
1021    pub sub: OverruledAttributeSub,
1022}
1023
1024#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            DeprecatedLintName<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DeprecatedLintName {
                        name: __binding_0,
                        suggestion: __binding_1,
                        replace: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_deprecated_lint_name);
                        ;
                        let __code_38 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        diag.arg("name", __binding_0);
                        diag.arg("replace", __binding_2);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_38,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1025#[diag(lint_deprecated_lint_name)]
1026pub(crate) struct DeprecatedLintName<'a> {
1027    pub name: String,
1028    #[suggestion(code = "{replace}", applicability = "machine-applicable")]
1029    pub suggestion: Span,
1030    pub replace: &'a str,
1031}
1032
1033#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            DeprecatedLintNameFromCommandLine<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DeprecatedLintNameFromCommandLine {
                        name: __binding_0,
                        replace: __binding_1,
                        requested_level: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_deprecated_lint_name);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("replace", __binding_1);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1034#[diag(lint_deprecated_lint_name)]
1035#[help]
1036pub(crate) struct DeprecatedLintNameFromCommandLine<'a> {
1037    pub name: String,
1038    pub replace: &'a str,
1039    #[subdiagnostic]
1040    pub requested_level: RequestedLevel<'a>,
1041}
1042
1043#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            RenamedLint<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RenamedLint {
                        name: __binding_0,
                        replace: __binding_1,
                        suggestion: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_renamed_lint);
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("replace", __binding_1);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1044#[diag(lint_renamed_lint)]
1045pub(crate) struct RenamedLint<'a> {
1046    pub name: &'a str,
1047    pub replace: &'a str,
1048    #[subdiagnostic]
1049    pub suggestion: RenamedLintSuggestion<'a>,
1050}
1051
1052#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for RenamedLintSuggestion<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RenamedLintSuggestion::WithSpan {
                        suggestion: __binding_0, replace: __binding_1 } => {
                        let __code_39 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replace", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_39, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    RenamedLintSuggestion::WithoutSpan { replace: __binding_0 }
                        => {
                        diag.store_args();
                        diag.arg("replace", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1053pub(crate) enum RenamedLintSuggestion<'a> {
1054    #[suggestion(lint_suggestion, code = "{replace}", applicability = "machine-applicable")]
1055    WithSpan {
1056        #[primary_span]
1057        suggestion: Span,
1058        replace: &'a str,
1059    },
1060    #[help(lint_help)]
1061    WithoutSpan { replace: &'a str },
1062}
1063
1064#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            RenamedLintFromCommandLine<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RenamedLintFromCommandLine {
                        name: __binding_0,
                        replace: __binding_1,
                        suggestion: __binding_2,
                        requested_level: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_renamed_lint);
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("replace", __binding_1);
                        diag.subdiagnostic(__binding_2);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1065#[diag(lint_renamed_lint)]
1066pub(crate) struct RenamedLintFromCommandLine<'a> {
1067    pub name: &'a str,
1068    pub replace: &'a str,
1069    #[subdiagnostic]
1070    pub suggestion: RenamedLintSuggestion<'a>,
1071    #[subdiagnostic]
1072    pub requested_level: RequestedLevel<'a>,
1073}
1074
1075#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            RemovedLint<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RemovedLint { name: __binding_0, reason: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_removed_lint);
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("reason", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1076#[diag(lint_removed_lint)]
1077pub(crate) struct RemovedLint<'a> {
1078    pub name: &'a str,
1079    pub reason: &'a str,
1080}
1081
1082#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            RemovedLintFromCommandLine<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RemovedLintFromCommandLine {
                        name: __binding_0,
                        reason: __binding_1,
                        requested_level: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_removed_lint);
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("reason", __binding_1);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1083#[diag(lint_removed_lint)]
1084pub(crate) struct RemovedLintFromCommandLine<'a> {
1085    pub name: &'a str,
1086    pub reason: &'a str,
1087    #[subdiagnostic]
1088    pub requested_level: RequestedLevel<'a>,
1089}
1090
1091#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnknownLint {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnknownLint { name: __binding_0, suggestion: __binding_1 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_unknown_lint);
                        ;
                        diag.arg("name", __binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1092#[diag(lint_unknown_lint)]
1093pub(crate) struct UnknownLint {
1094    pub name: String,
1095    #[subdiagnostic]
1096    pub suggestion: Option<UnknownLintSuggestion>,
1097}
1098
1099#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnknownLintSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnknownLintSuggestion::WithSpan {
                        suggestion: __binding_0,
                        replace: __binding_1,
                        from_rustc: __binding_2 } => {
                        let __code_40 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replace", __binding_1);
                        diag.arg("from_rustc", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_40, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    UnknownLintSuggestion::WithoutSpan {
                        replace: __binding_0, from_rustc: __binding_1 } => {
                        diag.store_args();
                        diag.arg("replace", __binding_0);
                        diag.arg("from_rustc", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1100pub(crate) enum UnknownLintSuggestion {
1101    #[suggestion(lint_suggestion, code = "{replace}", applicability = "maybe-incorrect")]
1102    WithSpan {
1103        #[primary_span]
1104        suggestion: Span,
1105        replace: Symbol,
1106        from_rustc: bool,
1107    },
1108    #[help(lint_help)]
1109    WithoutSpan { replace: Symbol, from_rustc: bool },
1110}
1111
1112#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnknownLintFromCommandLine<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnknownLintFromCommandLine {
                        name: __binding_0,
                        suggestion: __binding_1,
                        requested_level: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_unknown_lint);
                        diag.code(E0602);
                        ;
                        diag.arg("name", __binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1113#[diag(lint_unknown_lint, code = E0602)]
1114pub(crate) struct UnknownLintFromCommandLine<'a> {
1115    pub name: String,
1116    #[subdiagnostic]
1117    pub suggestion: Option<UnknownLintSuggestion>,
1118    #[subdiagnostic]
1119    pub requested_level: RequestedLevel<'a>,
1120}
1121
1122#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            IgnoredUnlessCrateSpecified<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    IgnoredUnlessCrateSpecified {
                        level: __binding_0, name: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_ignored_unless_crate_specified);
                        ;
                        diag.arg("level", __binding_0);
                        diag.arg("name", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1123#[diag(lint_ignored_unless_crate_specified)]
1124pub(crate) struct IgnoredUnlessCrateSpecified<'a> {
1125    pub level: &'a str,
1126    pub name: Symbol,
1127}
1128
1129// dangling.rs
1130#[derive(const _: () =
    {
        impl<'__a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            DanglingPointersFromTemporaries<'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DanglingPointersFromTemporaries {
                        callee: __binding_0,
                        ty: __binding_1,
                        ptr_span: __binding_2,
                        temporary_span: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_dangling_pointers_from_temporaries);
                        diag.help(crate::fluent_generated::lint_help_bind);
                        diag.note(crate::fluent_generated::lint_note_safe);
                        diag.note(crate::fluent_generated::lint_note_return);
                        diag.note(crate::fluent_generated::lint_note_more_info);
                        ;
                        diag.arg("callee", __binding_0);
                        diag.arg("ty", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::lint_label_ptr);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::lint_label_temporary);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1131#[diag(lint_dangling_pointers_from_temporaries)]
1132#[help(lint_help_bind)]
1133#[note(lint_note_safe)]
1134#[note(lint_note_return)]
1135#[note(lint_note_more_info)]
1136// FIXME: put #[primary_span] on `ptr_span` once it does not cause conflicts
1137pub(crate) struct DanglingPointersFromTemporaries<'tcx> {
1138    pub callee: Ident,
1139    pub ty: Ty<'tcx>,
1140    #[label(lint_label_ptr)]
1141    pub ptr_span: Span,
1142    #[label(lint_label_temporary)]
1143    pub temporary_span: Span,
1144}
1145
1146#[derive(const _: () =
    {
        impl<'__a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            DanglingPointersFromLocals<'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DanglingPointersFromLocals {
                        ret_ty: __binding_0,
                        ret_ty_span: __binding_1,
                        fn_kind: __binding_2,
                        local_var: __binding_3,
                        local_var_name: __binding_4,
                        local_var_ty: __binding_5,
                        created_at: __binding_6 } => {
                        diag.primary_message(crate::fluent_generated::lint_dangling_pointers_from_locals);
                        diag.note(crate::fluent_generated::lint_note_safe);
                        diag.note(crate::fluent_generated::lint_note_more_info);
                        ;
                        diag.arg("ret_ty", __binding_0);
                        diag.arg("fn_kind", __binding_2);
                        diag.arg("local_var_name", __binding_4);
                        diag.arg("local_var_ty", __binding_5);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::lint_ret_ty);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::lint_local_var);
                        if let Some(__binding_6) = __binding_6 {
                            diag.span_label(__binding_6,
                                crate::fluent_generated::lint_created_at);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1147#[diag(lint_dangling_pointers_from_locals)]
1148#[note(lint_note_safe)]
1149#[note(lint_note_more_info)]
1150pub(crate) struct DanglingPointersFromLocals<'tcx> {
1151    pub ret_ty: Ty<'tcx>,
1152    #[label(lint_ret_ty)]
1153    pub ret_ty_span: Span,
1154    pub fn_kind: &'static str,
1155    #[label(lint_local_var)]
1156    pub local_var: Span,
1157    pub local_var_name: Ident,
1158    pub local_var_ty: Ty<'tcx>,
1159    #[label(lint_created_at)]
1160    pub created_at: Option<Span>,
1161}
1162
1163// multiple_supertrait_upcastable.rs
1164#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            MultipleSupertraitUpcastable {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    MultipleSupertraitUpcastable { ident: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_multiple_supertrait_upcastable);
                        ;
                        diag.arg("ident", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1165#[diag(lint_multiple_supertrait_upcastable)]
1166pub(crate) struct MultipleSupertraitUpcastable {
1167    pub ident: Ident,
1168}
1169
1170// non_ascii_idents.rs
1171#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            IdentifierNonAsciiChar {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    IdentifierNonAsciiChar => {
                        diag.primary_message(crate::fluent_generated::lint_identifier_non_ascii_char);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1172#[diag(lint_identifier_non_ascii_char)]
1173pub(crate) struct IdentifierNonAsciiChar;
1174
1175#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            IdentifierUncommonCodepoints {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    IdentifierUncommonCodepoints {
                        codepoints: __binding_0,
                        codepoints_len: __binding_1,
                        identifier_type: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_identifier_uncommon_codepoints);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("codepoints", __binding_0);
                        diag.arg("codepoints_len", __binding_1);
                        diag.arg("identifier_type", __binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1176#[diag(lint_identifier_uncommon_codepoints)]
1177#[note]
1178pub(crate) struct IdentifierUncommonCodepoints {
1179    pub codepoints: Vec<char>,
1180    pub codepoints_len: usize,
1181    pub identifier_type: &'static str,
1182}
1183
1184#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            ConfusableIdentifierPair {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ConfusableIdentifierPair {
                        existing_sym: __binding_0,
                        sym: __binding_1,
                        label: __binding_2,
                        main_label: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_confusable_identifier_pair);
                        ;
                        diag.arg("existing_sym", __binding_0);
                        diag.arg("sym", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::lint_other_use);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::lint_current_use);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1185#[diag(lint_confusable_identifier_pair)]
1186pub(crate) struct ConfusableIdentifierPair {
1187    pub existing_sym: Symbol,
1188    pub sym: Symbol,
1189    #[label(lint_other_use)]
1190    pub label: Span,
1191    #[label(lint_current_use)]
1192    pub main_label: Span,
1193}
1194
1195#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            MixedScriptConfusables {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    MixedScriptConfusables {
                        set: __binding_0, includes: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_mixed_script_confusables);
                        diag.note(crate::fluent_generated::lint_includes_note);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("set", __binding_0);
                        diag.arg("includes", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1196#[diag(lint_mixed_script_confusables)]
1197#[note(lint_includes_note)]
1198#[note]
1199pub(crate) struct MixedScriptConfusables {
1200    pub set: String,
1201    pub includes: String,
1202}
1203
1204// non_fmt_panic.rs
1205pub(crate) struct NonFmtPanicUnused {
1206    pub count: usize,
1207    pub suggestion: Option<Span>,
1208}
1209
1210// Used because of two suggestions based on one Option<Span>
1211impl<'a> LintDiagnostic<'a, ()> for NonFmtPanicUnused {
1212    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
1213        diag.primary_message(fluent::lint_non_fmt_panic_unused);
1214        diag.arg("count", self.count);
1215        diag.note(fluent::lint_note);
1216        if let Some(span) = self.suggestion {
1217            diag.span_suggestion(
1218                span.shrink_to_hi(),
1219                fluent::lint_add_args_suggestion,
1220                ", ...",
1221                Applicability::HasPlaceholders,
1222            );
1223            diag.span_suggestion(
1224                span.shrink_to_lo(),
1225                fluent::lint_add_fmt_suggestion,
1226                "\"{}\", ",
1227                Applicability::MachineApplicable,
1228            );
1229        }
1230    }
1231}
1232
1233#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            NonFmtPanicBraces {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NonFmtPanicBraces {
                        count: __binding_0, suggestion: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_non_fmt_panic_braces);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        let __code_41 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\"{{}}\", "))
                                            })].into_iter();
                        diag.arg("count", __binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::_subdiag::suggestion, __code_41,
                                rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowCode);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1234#[diag(lint_non_fmt_panic_braces)]
1235#[note]
1236pub(crate) struct NonFmtPanicBraces {
1237    pub count: usize,
1238    #[suggestion(code = "\"{{}}\", ", applicability = "machine-applicable")]
1239    pub suggestion: Option<Span>,
1240}
1241
1242// nonstandard_style.rs
1243#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            NonCamelCaseType<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NonCamelCaseType {
                        sort: __binding_0, name: __binding_1, sub: __binding_2 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_non_camel_case_type);
                        ;
                        diag.arg("sort", __binding_0);
                        diag.arg("name", __binding_1);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1244#[diag(lint_non_camel_case_type)]
1245pub(crate) struct NonCamelCaseType<'a> {
1246    pub sort: &'a str,
1247    pub name: &'a str,
1248    #[subdiagnostic]
1249    pub sub: NonCamelCaseTypeSub,
1250}
1251
1252#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NonCamelCaseTypeSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NonCamelCaseTypeSub::Label { span: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    NonCamelCaseTypeSub::Suggestion {
                        span: __binding_0, replace: __binding_1 } => {
                        let __code_42 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replace", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_42, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1253pub(crate) enum NonCamelCaseTypeSub {
1254    #[label(lint_label)]
1255    Label {
1256        #[primary_span]
1257        span: Span,
1258    },
1259    #[suggestion(lint_suggestion, code = "{replace}", applicability = "maybe-incorrect")]
1260    Suggestion {
1261        #[primary_span]
1262        span: Span,
1263        replace: String,
1264    },
1265}
1266
1267#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            NonSnakeCaseDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NonSnakeCaseDiag {
                        sort: __binding_0,
                        name: __binding_1,
                        sc: __binding_2,
                        sub: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_non_snake_case);
                        ;
                        diag.arg("sort", __binding_0);
                        diag.arg("name", __binding_1);
                        diag.arg("sc", __binding_2);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1268#[diag(lint_non_snake_case)]
1269pub(crate) struct NonSnakeCaseDiag<'a> {
1270    pub sort: &'a str,
1271    pub name: &'a str,
1272    pub sc: String,
1273    #[subdiagnostic]
1274    pub sub: NonSnakeCaseDiagSub,
1275}
1276
1277pub(crate) enum NonSnakeCaseDiagSub {
1278    Label { span: Span },
1279    Help,
1280    RenameOrConvertSuggestion { span: Span, suggestion: Ident },
1281    ConvertSuggestion { span: Span, suggestion: String },
1282    SuggestionAndNote { span: Span },
1283}
1284
1285impl Subdiagnostic for NonSnakeCaseDiagSub {
1286    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
1287        match self {
1288            NonSnakeCaseDiagSub::Label { span } => {
1289                diag.span_label(span, fluent::lint_label);
1290            }
1291            NonSnakeCaseDiagSub::Help => {
1292                diag.help(fluent::lint_help);
1293            }
1294            NonSnakeCaseDiagSub::ConvertSuggestion { span, suggestion } => {
1295                diag.span_suggestion(
1296                    span,
1297                    fluent::lint_convert_suggestion,
1298                    suggestion,
1299                    Applicability::MaybeIncorrect,
1300                );
1301            }
1302            NonSnakeCaseDiagSub::RenameOrConvertSuggestion { span, suggestion } => {
1303                diag.span_suggestion(
1304                    span,
1305                    fluent::lint_rename_or_convert_suggestion,
1306                    suggestion,
1307                    Applicability::MaybeIncorrect,
1308                );
1309            }
1310            NonSnakeCaseDiagSub::SuggestionAndNote { span } => {
1311                diag.note(fluent::lint_cannot_convert_note);
1312                diag.span_suggestion(
1313                    span,
1314                    fluent::lint_rename_suggestion,
1315                    "",
1316                    Applicability::MaybeIncorrect,
1317                );
1318            }
1319        }
1320    }
1321}
1322
1323#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            NonUpperCaseGlobal<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NonUpperCaseGlobal {
                        sort: __binding_0,
                        name: __binding_1,
                        sub: __binding_2,
                        usages: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_non_upper_case_global);
                        ;
                        diag.arg("sort", __binding_0);
                        diag.arg("name", __binding_1);
                        diag.subdiagnostic(__binding_2);
                        for __binding_3 in __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1324#[diag(lint_non_upper_case_global)]
1325pub(crate) struct NonUpperCaseGlobal<'a> {
1326    pub sort: &'a str,
1327    pub name: &'a str,
1328    #[subdiagnostic]
1329    pub sub: NonUpperCaseGlobalSub,
1330    #[subdiagnostic]
1331    pub usages: Vec<NonUpperCaseGlobalSubTool>,
1332}
1333
1334#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NonUpperCaseGlobalSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NonUpperCaseGlobalSub::Label { span: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    NonUpperCaseGlobalSub::Suggestion {
                        span: __binding_0,
                        applicability: __binding_1,
                        replace: __binding_2 } => {
                        let __code_43 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replace", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_43, __binding_1,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1335pub(crate) enum NonUpperCaseGlobalSub {
1336    #[label(lint_label)]
1337    Label {
1338        #[primary_span]
1339        span: Span,
1340    },
1341    #[suggestion(lint_suggestion, code = "{replace}")]
1342    Suggestion {
1343        #[primary_span]
1344        span: Span,
1345        #[applicability]
1346        applicability: Applicability,
1347        replace: String,
1348    },
1349}
1350
1351#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NonUpperCaseGlobalSubTool {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NonUpperCaseGlobalSubTool {
                        span: __binding_0, replace: __binding_1 } => {
                        let __code_44 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replace", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_44, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1352#[suggestion(
1353    lint_suggestion,
1354    code = "{replace}",
1355    applicability = "machine-applicable",
1356    style = "tool-only"
1357)]
1358pub(crate) struct NonUpperCaseGlobalSubTool {
1359    #[primary_span]
1360    pub(crate) span: Span,
1361    pub(crate) replace: String,
1362}
1363
1364// noop_method_call.rs
1365#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            NoopMethodCallDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NoopMethodCallDiag {
                        method: __binding_0,
                        orig_ty: __binding_1,
                        trait_: __binding_2,
                        label: __binding_3,
                        suggest_derive: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_noop_method_call);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        let __code_45 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        let __code_46 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#[derive(Clone)]\n"))
                                            })].into_iter();
                        diag.arg("method", __binding_0);
                        diag.arg("orig_ty", __binding_1);
                        diag.arg("trait_", __binding_2);
                        diag.span_suggestions_with_style(__binding_3,
                            crate::fluent_generated::_subdiag::suggestion, __code_45,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        if let Some(__binding_4) = __binding_4 {
                            diag.span_suggestions_with_style(__binding_4,
                                crate::fluent_generated::lint_derive_suggestion, __code_46,
                                rustc_errors::Applicability::MaybeIncorrect,
                                rustc_errors::SuggestionStyle::ShowCode);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1366#[diag(lint_noop_method_call)]
1367#[note]
1368pub(crate) struct NoopMethodCallDiag<'a> {
1369    pub method: Ident,
1370    pub orig_ty: Ty<'a>,
1371    pub trait_: Symbol,
1372    #[suggestion(code = "", applicability = "machine-applicable")]
1373    pub label: Span,
1374    #[suggestion(
1375        lint_derive_suggestion,
1376        code = "#[derive(Clone)]\n",
1377        applicability = "maybe-incorrect"
1378    )]
1379    pub suggest_derive: Option<Span>,
1380}
1381
1382#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            SuspiciousDoubleRefDerefDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SuspiciousDoubleRefDerefDiag { ty: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_suspicious_double_ref_deref);
                        ;
                        diag.arg("ty", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1383#[diag(lint_suspicious_double_ref_deref)]
1384pub(crate) struct SuspiciousDoubleRefDerefDiag<'a> {
1385    pub ty: Ty<'a>,
1386}
1387
1388#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            SuspiciousDoubleRefCloneDiag<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SuspiciousDoubleRefCloneDiag { ty: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_suspicious_double_ref_clone);
                        ;
                        diag.arg("ty", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1389#[diag(lint_suspicious_double_ref_clone)]
1390pub(crate) struct SuspiciousDoubleRefCloneDiag<'a> {
1391    pub ty: Ty<'a>,
1392}
1393
1394// non_local_defs.rs
1395pub(crate) enum NonLocalDefinitionsDiag {
1396    Impl {
1397        depth: u32,
1398        body_kind_descr: &'static str,
1399        body_name: String,
1400        cargo_update: Option<NonLocalDefinitionsCargoUpdateNote>,
1401        const_anon: Option<Option<Span>>,
1402        doctest: bool,
1403        macro_to_change: Option<(String, &'static str)>,
1404    },
1405    MacroRules {
1406        depth: u32,
1407        body_kind_descr: &'static str,
1408        body_name: String,
1409        doctest: bool,
1410        cargo_update: Option<NonLocalDefinitionsCargoUpdateNote>,
1411    },
1412}
1413
1414impl<'a> LintDiagnostic<'a, ()> for NonLocalDefinitionsDiag {
1415    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
1416        match self {
1417            NonLocalDefinitionsDiag::Impl {
1418                depth,
1419                body_kind_descr,
1420                body_name,
1421                cargo_update,
1422                const_anon,
1423                doctest,
1424                macro_to_change,
1425            } => {
1426                diag.primary_message(fluent::lint_non_local_definitions_impl);
1427                diag.arg("depth", depth);
1428                diag.arg("body_kind_descr", body_kind_descr);
1429                diag.arg("body_name", body_name);
1430
1431                if let Some((macro_to_change, macro_kind)) = macro_to_change {
1432                    diag.arg("macro_to_change", macro_to_change);
1433                    diag.arg("macro_kind", macro_kind);
1434                    diag.note(fluent::lint_macro_to_change);
1435                }
1436                if let Some(cargo_update) = cargo_update {
1437                    diag.subdiagnostic(cargo_update);
1438                }
1439
1440                diag.note(fluent::lint_non_local);
1441
1442                if doctest {
1443                    diag.help(fluent::lint_doctest);
1444                }
1445
1446                if let Some(const_anon) = const_anon {
1447                    diag.note(fluent::lint_exception);
1448                    if let Some(const_anon) = const_anon {
1449                        diag.span_suggestion(
1450                            const_anon,
1451                            fluent::lint_const_anon,
1452                            "_",
1453                            Applicability::MachineApplicable,
1454                        );
1455                    }
1456                }
1457            }
1458            NonLocalDefinitionsDiag::MacroRules {
1459                depth,
1460                body_kind_descr,
1461                body_name,
1462                doctest,
1463                cargo_update,
1464            } => {
1465                diag.primary_message(fluent::lint_non_local_definitions_macro_rules);
1466                diag.arg("depth", depth);
1467                diag.arg("body_kind_descr", body_kind_descr);
1468                diag.arg("body_name", body_name);
1469
1470                if doctest {
1471                    diag.help(fluent::lint_help_doctest);
1472                } else {
1473                    diag.help(fluent::lint_help);
1474                }
1475
1476                diag.note(fluent::lint_non_local);
1477
1478                if let Some(cargo_update) = cargo_update {
1479                    diag.subdiagnostic(cargo_update);
1480                }
1481            }
1482        }
1483    }
1484}
1485
1486#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            NonLocalDefinitionsCargoUpdateNote {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NonLocalDefinitionsCargoUpdateNote {
                        macro_kind: __binding_0,
                        macro_name: __binding_1,
                        crate_name: __binding_2 } => {
                        diag.store_args();
                        diag.arg("macro_kind", __binding_0);
                        diag.arg("macro_name", __binding_1);
                        diag.arg("crate_name", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_non_local_definitions_cargo_update);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1487#[note(lint_non_local_definitions_cargo_update)]
1488pub(crate) struct NonLocalDefinitionsCargoUpdateNote {
1489    pub macro_kind: &'static str,
1490    pub macro_name: Symbol,
1491    pub crate_name: Symbol,
1492}
1493
1494// precedence.rs
1495#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AmbiguousNegativeLiteralsDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AmbiguousNegativeLiteralsDiag {
                        negative_literal: __binding_0, current_behavior: __binding_1
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_ambiguous_negative_literals);
                        diag.note(crate::fluent_generated::lint_example);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1496#[diag(lint_ambiguous_negative_literals)]
1497#[note(lint_example)]
1498pub(crate) struct AmbiguousNegativeLiteralsDiag {
1499    #[subdiagnostic]
1500    pub negative_literal: AmbiguousNegativeLiteralsNegativeLiteralSuggestion,
1501    #[subdiagnostic]
1502    pub current_behavior: AmbiguousNegativeLiteralsCurrentBehaviorSuggestion,
1503}
1504
1505#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            AmbiguousNegativeLiteralsNegativeLiteralSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousNegativeLiteralsNegativeLiteralSuggestion {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_47 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_48 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_47));
                        suggestions.push((__binding_1, __code_48));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_negative_literal);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1506#[multipart_suggestion(lint_negative_literal, applicability = "maybe-incorrect")]
1507pub(crate) struct AmbiguousNegativeLiteralsNegativeLiteralSuggestion {
1508    #[suggestion_part(code = "(")]
1509    pub start_span: Span,
1510    #[suggestion_part(code = ")")]
1511    pub end_span: Span,
1512}
1513
1514#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            AmbiguousNegativeLiteralsCurrentBehaviorSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousNegativeLiteralsCurrentBehaviorSuggestion {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_49 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_50 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_49));
                        suggestions.push((__binding_1, __code_50));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_current_behavior);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1515#[multipart_suggestion(lint_current_behavior, applicability = "maybe-incorrect")]
1516pub(crate) struct AmbiguousNegativeLiteralsCurrentBehaviorSuggestion {
1517    #[suggestion_part(code = "(")]
1518    pub start_span: Span,
1519    #[suggestion_part(code = ")")]
1520    pub end_span: Span,
1521}
1522
1523// pass_by_value.rs
1524#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for PassByValueDiag
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    PassByValueDiag { ty: __binding_0, suggestion: __binding_1 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_pass_by_value);
                        ;
                        let __code_51 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_0))
                                            })].into_iter();
                        diag.arg("ty", __binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_51,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1525#[diag(lint_pass_by_value)]
1526pub(crate) struct PassByValueDiag {
1527    pub ty: String,
1528    #[suggestion(code = "{ty}", applicability = "maybe-incorrect")]
1529    pub suggestion: Span,
1530}
1531
1532// redundant_semicolon.rs
1533#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            RedundantSemicolonsDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RedundantSemicolonsDiag {
                        multiple: __binding_0, suggestion: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_redundant_semicolons);
                        ;
                        diag.arg("multiple", __binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1534#[diag(lint_redundant_semicolons)]
1535pub(crate) struct RedundantSemicolonsDiag {
1536    pub multiple: bool,
1537    #[subdiagnostic]
1538    pub suggestion: Option<RedundantSemicolonsSuggestion>,
1539}
1540
1541#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for RedundantSemicolonsSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RedundantSemicolonsSuggestion {
                        multiple_semicolons: __binding_0, span: __binding_1 } => {
                        let __code_52 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("multiple_semicolons", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_redundant_semicolons_suggestion);
                        diag.span_suggestions_with_style(__binding_1, __message,
                            __code_52, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1542#[suggestion(lint_redundant_semicolons_suggestion, code = "", applicability = "maybe-incorrect")]
1543pub(crate) struct RedundantSemicolonsSuggestion {
1544    pub multiple_semicolons: bool,
1545    #[primary_span]
1546    pub span: Span,
1547}
1548
1549// traits.rs
1550pub(crate) struct DropTraitConstraintsDiag<'a> {
1551    pub predicate: Clause<'a>,
1552    pub tcx: TyCtxt<'a>,
1553    pub def_id: DefId,
1554}
1555
1556// Needed for def_path_str
1557impl<'a> LintDiagnostic<'a, ()> for DropTraitConstraintsDiag<'_> {
1558    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
1559        diag.primary_message(fluent::lint_drop_trait_constraints);
1560        diag.arg("predicate", self.predicate);
1561        diag.arg("needs_drop", self.tcx.def_path_str(self.def_id));
1562    }
1563}
1564
1565pub(crate) struct DropGlue<'a> {
1566    pub tcx: TyCtxt<'a>,
1567    pub def_id: DefId,
1568}
1569
1570// Needed for def_path_str
1571impl<'a> LintDiagnostic<'a, ()> for DropGlue<'_> {
1572    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
1573        diag.primary_message(fluent::lint_drop_glue);
1574        diag.arg("needs_drop", self.tcx.def_path_str(self.def_id));
1575    }
1576}
1577
1578// transmute.rs
1579#[derive(const _: () =
    {
        impl<'__a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            IntegerToPtrTransmutes<'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    IntegerToPtrTransmutes { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_int_to_ptr_transmutes);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        diag.note(crate::fluent_generated::lint_note_exposed_provenance);
                        diag.help(crate::fluent_generated::lint_suggestion_without_provenance_mut);
                        diag.help(crate::fluent_generated::lint_help_transmute);
                        diag.help(crate::fluent_generated::lint_help_exposed_provenance);
                        ;
                        if let Some(__binding_0) = __binding_0 {
                            diag.subdiagnostic(__binding_0);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1580#[diag(lint_int_to_ptr_transmutes)]
1581#[note]
1582#[note(lint_note_exposed_provenance)]
1583#[help(lint_suggestion_without_provenance_mut)]
1584#[help(lint_help_transmute)]
1585#[help(lint_help_exposed_provenance)]
1586pub(crate) struct IntegerToPtrTransmutes<'tcx> {
1587    #[subdiagnostic]
1588    pub suggestion: Option<IntegerToPtrTransmutesSuggestion<'tcx>>,
1589}
1590
1591#[derive(const _: () =
    {
        impl<'tcx> rustc_errors::Subdiagnostic for
            IntegerToPtrTransmutesSuggestion<'tcx> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    IntegerToPtrTransmutesSuggestion::ToPtr {
                        dst: __binding_0,
                        suffix: __binding_1,
                        start_call: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_53 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("std::ptr::with_exposed_provenance{1}::<{0}>(",
                                            __binding_0, __binding_1))
                                });
                        suggestions.push((__binding_2, __code_53));
                        diag.store_args();
                        diag.arg("dst", __binding_0);
                        diag.arg("suffix", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_with_exposed_provenance);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    IntegerToPtrTransmutesSuggestion::ToRef {
                        dst: __binding_0,
                        suffix: __binding_1,
                        ref_mutbl: __binding_2,
                        start_call: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_54 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("&{1}*std::ptr::with_exposed_provenance{2}::<{0}>(",
                                            __binding_0, __binding_2, __binding_1))
                                });
                        suggestions.push((__binding_3, __code_54));
                        diag.store_args();
                        diag.arg("dst", __binding_0);
                        diag.arg("suffix", __binding_1);
                        diag.arg("ref_mutbl", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_with_exposed_provenance);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1592pub(crate) enum IntegerToPtrTransmutesSuggestion<'tcx> {
1593    #[multipart_suggestion(
1594        lint_suggestion_with_exposed_provenance,
1595        applicability = "machine-applicable",
1596        style = "verbose"
1597    )]
1598    ToPtr {
1599        dst: Ty<'tcx>,
1600        suffix: &'static str,
1601        #[suggestion_part(code = "std::ptr::with_exposed_provenance{suffix}::<{dst}>(")]
1602        start_call: Span,
1603    },
1604    #[multipart_suggestion(
1605        lint_suggestion_with_exposed_provenance,
1606        applicability = "machine-applicable",
1607        style = "verbose"
1608    )]
1609    ToRef {
1610        dst: Ty<'tcx>,
1611        suffix: &'static str,
1612        ref_mutbl: &'static str,
1613        #[suggestion_part(
1614            code = "&{ref_mutbl}*std::ptr::with_exposed_provenance{suffix}::<{dst}>("
1615        )]
1616        start_call: Span,
1617    },
1618}
1619
1620// types.rs
1621#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            RangeEndpointOutOfRange<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RangeEndpointOutOfRange { ty: __binding_0, sub: __binding_1
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_range_endpoint_out_of_range);
                        ;
                        diag.arg("ty", __binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1622#[diag(lint_range_endpoint_out_of_range)]
1623pub(crate) struct RangeEndpointOutOfRange<'a> {
1624    pub ty: &'a str,
1625    #[subdiagnostic]
1626    pub sub: UseInclusiveRange<'a>,
1627}
1628
1629#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for UseInclusiveRange<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UseInclusiveRange::WithoutParen {
                        sugg: __binding_0,
                        start: __binding_1,
                        literal: __binding_2,
                        suffix: __binding_3 } => {
                        let __code_55 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{1}..={0}{2}",
                                                        __binding_2, __binding_1, __binding_3))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("start", __binding_1);
                        diag.arg("literal", __binding_2);
                        diag.arg("suffix", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_range_use_inclusive_range);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_55, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    UseInclusiveRange::WithParen {
                        eq_sugg: __binding_0,
                        lit_sugg: __binding_1,
                        literal: __binding_2,
                        suffix: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_56 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("="))
                                });
                        let __code_57 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}{1}", __binding_2,
                                            __binding_3))
                                });
                        suggestions.push((__binding_0, __code_56));
                        suggestions.push((__binding_1, __code_57));
                        diag.store_args();
                        diag.arg("literal", __binding_2);
                        diag.arg("suffix", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_range_use_inclusive_range);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1630pub(crate) enum UseInclusiveRange<'a> {
1631    #[suggestion(
1632        lint_range_use_inclusive_range,
1633        code = "{start}..={literal}{suffix}",
1634        applicability = "machine-applicable"
1635    )]
1636    WithoutParen {
1637        #[primary_span]
1638        sugg: Span,
1639        start: String,
1640        literal: u128,
1641        suffix: &'a str,
1642    },
1643    #[multipart_suggestion(lint_range_use_inclusive_range, applicability = "machine-applicable")]
1644    WithParen {
1645        #[suggestion_part(code = "=")]
1646        eq_sugg: Span,
1647        #[suggestion_part(code = "{literal}{suffix}")]
1648        lit_sugg: Span,
1649        literal: u128,
1650        suffix: &'a str,
1651    },
1652}
1653
1654#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            OverflowingBinHex<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    OverflowingBinHex {
                        ty: __binding_0,
                        lit: __binding_1,
                        dec: __binding_2,
                        actually: __binding_3,
                        sign: __binding_4,
                        sub: __binding_5,
                        sign_bit_sub: __binding_6 } => {
                        diag.primary_message(crate::fluent_generated::lint_overflowing_bin_hex);
                        ;
                        diag.arg("ty", __binding_0);
                        diag.arg("lit", __binding_1);
                        diag.arg("dec", __binding_2);
                        diag.arg("actually", __binding_3);
                        diag.subdiagnostic(__binding_4);
                        if let Some(__binding_5) = __binding_5 {
                            diag.subdiagnostic(__binding_5);
                        }
                        if let Some(__binding_6) = __binding_6 {
                            diag.subdiagnostic(__binding_6);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1655#[diag(lint_overflowing_bin_hex)]
1656pub(crate) struct OverflowingBinHex<'a> {
1657    pub ty: &'a str,
1658    pub lit: String,
1659    pub dec: u128,
1660    pub actually: String,
1661    #[subdiagnostic]
1662    pub sign: OverflowingBinHexSign,
1663    #[subdiagnostic]
1664    pub sub: Option<OverflowingBinHexSub<'a>>,
1665    #[subdiagnostic]
1666    pub sign_bit_sub: Option<OverflowingBinHexSignBitSub<'a>>,
1667}
1668
1669pub(crate) enum OverflowingBinHexSign {
1670    Positive,
1671    Negative,
1672}
1673
1674impl Subdiagnostic for OverflowingBinHexSign {
1675    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
1676        match self {
1677            OverflowingBinHexSign::Positive => {
1678                diag.note(fluent::lint_positive_note);
1679            }
1680            OverflowingBinHexSign::Negative => {
1681                diag.note(fluent::lint_negative_note);
1682                diag.note(fluent::lint_negative_becomes_note);
1683            }
1684        }
1685    }
1686}
1687
1688#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for OverflowingBinHexSub<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    OverflowingBinHexSub::Suggestion {
                        span: __binding_0,
                        suggestion_ty: __binding_1,
                        sans_suffix: __binding_2 } => {
                        let __code_58 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}{1}", __binding_2,
                                                        __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("suggestion_ty", __binding_1);
                        diag.arg("sans_suffix", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_58, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    OverflowingBinHexSub::Help { suggestion_ty: __binding_0 } =>
                        {
                        diag.store_args();
                        diag.arg("suggestion_ty", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1689pub(crate) enum OverflowingBinHexSub<'a> {
1690    #[suggestion(
1691        lint_suggestion,
1692        code = "{sans_suffix}{suggestion_ty}",
1693        applicability = "machine-applicable"
1694    )]
1695    Suggestion {
1696        #[primary_span]
1697        span: Span,
1698        suggestion_ty: &'a str,
1699        sans_suffix: &'a str,
1700    },
1701    #[help(lint_help)]
1702    Help { suggestion_ty: &'a str },
1703}
1704
1705#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            OverflowingBinHexSignBitSub<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    OverflowingBinHexSignBitSub {
                        span: __binding_0,
                        lit_no_suffix: __binding_1,
                        negative_val: __binding_2,
                        uint_ty: __binding_3,
                        int_ty: __binding_4 } => {
                        let __code_59 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{1}{2} as {0}",
                                                        __binding_4, __binding_1, __binding_3))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("lit_no_suffix", __binding_1);
                        diag.arg("negative_val", __binding_2);
                        diag.arg("uint_ty", __binding_3);
                        diag.arg("int_ty", __binding_4);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_sign_bit_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_59, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1706#[suggestion(
1707    lint_sign_bit_suggestion,
1708    code = "{lit_no_suffix}{uint_ty} as {int_ty}",
1709    applicability = "maybe-incorrect"
1710)]
1711pub(crate) struct OverflowingBinHexSignBitSub<'a> {
1712    #[primary_span]
1713    pub span: Span,
1714    pub lit_no_suffix: &'a str,
1715    pub negative_val: String,
1716    pub uint_ty: &'a str,
1717    pub int_ty: &'a str,
1718}
1719
1720#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            OverflowingInt<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    OverflowingInt {
                        ty: __binding_0,
                        lit: __binding_1,
                        min: __binding_2,
                        max: __binding_3,
                        help: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_overflowing_int);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("ty", __binding_0);
                        diag.arg("lit", __binding_1);
                        diag.arg("min", __binding_2);
                        diag.arg("max", __binding_3);
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1721#[diag(lint_overflowing_int)]
1722#[note]
1723pub(crate) struct OverflowingInt<'a> {
1724    pub ty: &'a str,
1725    pub lit: String,
1726    pub min: i128,
1727    pub max: u128,
1728    #[subdiagnostic]
1729    pub help: Option<OverflowingIntHelp<'a>>,
1730}
1731
1732#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for OverflowingIntHelp<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    OverflowingIntHelp { suggestion_ty: __binding_0 } => {
                        diag.store_args();
                        diag.arg("suggestion_ty", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1733#[help(lint_help)]
1734pub(crate) struct OverflowingIntHelp<'a> {
1735    pub suggestion_ty: &'a str,
1736}
1737
1738#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for OnlyCastu8ToChar
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    OnlyCastu8ToChar { span: __binding_0, literal: __binding_1 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_only_cast_u8_to_char);
                        ;
                        let __code_60 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\'\\u{{{0:X}}}\'",
                                                        __binding_1))
                                            })].into_iter();
                        diag.arg("literal", __binding_1);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_60,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1739#[diag(lint_only_cast_u8_to_char)]
1740pub(crate) struct OnlyCastu8ToChar {
1741    #[suggestion(code = "'\\u{{{literal:X}}}'", applicability = "machine-applicable")]
1742    pub span: Span,
1743    pub literal: u128,
1744}
1745
1746#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            OverflowingUInt<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    OverflowingUInt {
                        ty: __binding_0,
                        lit: __binding_1,
                        min: __binding_2,
                        max: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_overflowing_uint);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("ty", __binding_0);
                        diag.arg("lit", __binding_1);
                        diag.arg("min", __binding_2);
                        diag.arg("max", __binding_3);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1747#[diag(lint_overflowing_uint)]
1748#[note]
1749pub(crate) struct OverflowingUInt<'a> {
1750    pub ty: &'a str,
1751    pub lit: String,
1752    pub min: u128,
1753    pub max: u128,
1754}
1755
1756#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            OverflowingLiteral<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    OverflowingLiteral { ty: __binding_0, lit: __binding_1 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_overflowing_literal);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("ty", __binding_0);
                        diag.arg("lit", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1757#[diag(lint_overflowing_literal)]
1758#[note]
1759pub(crate) struct OverflowingLiteral<'a> {
1760    pub ty: &'a str,
1761    pub lit: String,
1762}
1763
1764#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            SurrogateCharCast {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SurrogateCharCast { literal: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_surrogate_char_cast);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("literal", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1765#[diag(lint_surrogate_char_cast)]
1766#[note]
1767pub(crate) struct SurrogateCharCast {
1768    pub literal: u128,
1769}
1770
1771#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for TooLargeCharCast
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    TooLargeCharCast { literal: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_too_large_char_cast);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("literal", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1772#[diag(lint_too_large_char_cast)]
1773#[note]
1774pub(crate) struct TooLargeCharCast {
1775    pub literal: u128,
1776}
1777
1778#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UsesPowerAlignment {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UsesPowerAlignment => {
                        diag.primary_message(crate::fluent_generated::lint_uses_power_alignment);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1779#[diag(lint_uses_power_alignment)]
1780pub(crate) struct UsesPowerAlignment;
1781
1782#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedComparisons {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedComparisons => {
                        diag.primary_message(crate::fluent_generated::lint_unused_comparisons);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1783#[diag(lint_unused_comparisons)]
1784pub(crate) struct UnusedComparisons;
1785
1786#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            InvalidNanComparisons {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidNanComparisons::EqNe { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_nan_comparisons_eq_ne);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                    InvalidNanComparisons::LtLeGtGe => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_nan_comparisons_lt_le_gt_ge);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1787pub(crate) enum InvalidNanComparisons {
1788    #[diag(lint_invalid_nan_comparisons_eq_ne)]
1789    EqNe {
1790        #[subdiagnostic]
1791        suggestion: InvalidNanComparisonsSuggestion,
1792    },
1793    #[diag(lint_invalid_nan_comparisons_lt_le_gt_ge)]
1794    LtLeGtGe,
1795}
1796
1797#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidNanComparisonsSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidNanComparisonsSuggestion::Spanful {
                        neg: __binding_0,
                        float: __binding_1,
                        nan_plus_binop: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_61 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("!"))
                                });
                        let __code_62 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(".is_nan()"))
                                });
                        let __code_63 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        if let Some(__binding_0) = __binding_0 {
                            suggestions.push((__binding_0, __code_61));
                        }
                        suggestions.push((__binding_1, __code_62));
                        suggestions.push((__binding_2, __code_63));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidNanComparisonsSuggestion::Spanless => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1798pub(crate) enum InvalidNanComparisonsSuggestion {
1799    #[multipart_suggestion(
1800        lint_suggestion,
1801        style = "verbose",
1802        applicability = "machine-applicable"
1803    )]
1804    Spanful {
1805        #[suggestion_part(code = "!")]
1806        neg: Option<Span>,
1807        #[suggestion_part(code = ".is_nan()")]
1808        float: Span,
1809        #[suggestion_part(code = "")]
1810        nan_plus_binop: Span,
1811    },
1812    #[help(lint_suggestion)]
1813    Spanless,
1814}
1815
1816#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            AmbiguousWidePointerComparisons<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AmbiguousWidePointerComparisons::SpanfulEq {
                        addr_suggestion: __binding_0,
                        addr_metadata_suggestion: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_ambiguous_wide_pointer_comparisons);
                        ;
                        diag.subdiagnostic(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                    AmbiguousWidePointerComparisons::SpanfulCmp {
                        cast_suggestion: __binding_0, expect_suggestion: __binding_1
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_ambiguous_wide_pointer_comparisons);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                    AmbiguousWidePointerComparisons::Spanless => {
                        diag.primary_message(crate::fluent_generated::lint_ambiguous_wide_pointer_comparisons);
                        diag.help(crate::fluent_generated::lint_addr_metadata_suggestion);
                        diag.help(crate::fluent_generated::lint_addr_suggestion);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1817pub(crate) enum AmbiguousWidePointerComparisons<'a> {
1818    #[diag(lint_ambiguous_wide_pointer_comparisons)]
1819    SpanfulEq {
1820        #[subdiagnostic]
1821        addr_suggestion: AmbiguousWidePointerComparisonsAddrSuggestion<'a>,
1822        #[subdiagnostic]
1823        addr_metadata_suggestion: Option<AmbiguousWidePointerComparisonsAddrMetadataSuggestion<'a>>,
1824    },
1825    #[diag(lint_ambiguous_wide_pointer_comparisons)]
1826    SpanfulCmp {
1827        #[subdiagnostic]
1828        cast_suggestion: AmbiguousWidePointerComparisonsCastSuggestion<'a>,
1829        #[subdiagnostic]
1830        expect_suggestion: AmbiguousWidePointerComparisonsExpectSuggestion<'a>,
1831    },
1832    #[diag(lint_ambiguous_wide_pointer_comparisons)]
1833    #[help(lint_addr_metadata_suggestion)]
1834    #[help(lint_addr_suggestion)]
1835    Spanless,
1836}
1837
1838#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            AmbiguousWidePointerComparisonsAddrMetadataSuggestion<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousWidePointerComparisonsAddrMetadataSuggestion {
                        ne: __binding_0,
                        deref_left: __binding_1,
                        deref_right: __binding_2,
                        l_modifiers: __binding_3,
                        r_modifiers: __binding_4,
                        left: __binding_5,
                        middle: __binding_6,
                        right: __binding_7 } => {
                        let mut suggestions = Vec::new();
                        let __code_64 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}std::ptr::eq({0}",
                                            __binding_1, __binding_0))
                                });
                        let __code_65 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}, {0}", __binding_2,
                                            __binding_3))
                                });
                        let __code_66 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0})", __binding_4))
                                });
                        suggestions.push((__binding_5, __code_64));
                        suggestions.push((__binding_6, __code_65));
                        suggestions.push((__binding_7, __code_66));
                        diag.store_args();
                        diag.arg("ne", __binding_0);
                        diag.arg("deref_left", __binding_1);
                        diag.arg("deref_right", __binding_2);
                        diag.arg("l_modifiers", __binding_3);
                        diag.arg("r_modifiers", __binding_4);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_addr_metadata_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1839#[multipart_suggestion(
1840    lint_addr_metadata_suggestion,
1841    style = "verbose",
1842    // FIXME(#53934): make machine-applicable again
1843    applicability = "maybe-incorrect"
1844)]
1845pub(crate) struct AmbiguousWidePointerComparisonsAddrMetadataSuggestion<'a> {
1846    pub ne: &'a str,
1847    pub deref_left: &'a str,
1848    pub deref_right: &'a str,
1849    pub l_modifiers: &'a str,
1850    pub r_modifiers: &'a str,
1851    #[suggestion_part(code = "{ne}std::ptr::eq({deref_left}")]
1852    pub left: Span,
1853    #[suggestion_part(code = "{l_modifiers}, {deref_right}")]
1854    pub middle: Span,
1855    #[suggestion_part(code = "{r_modifiers})")]
1856    pub right: Span,
1857}
1858
1859#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            AmbiguousWidePointerComparisonsAddrSuggestion<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousWidePointerComparisonsAddrSuggestion {
                        ne: __binding_0,
                        deref_left: __binding_1,
                        deref_right: __binding_2,
                        l_modifiers: __binding_3,
                        r_modifiers: __binding_4,
                        left: __binding_5,
                        middle: __binding_6,
                        right: __binding_7 } => {
                        let mut suggestions = Vec::new();
                        let __code_67 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}std::ptr::addr_eq({0}",
                                            __binding_1, __binding_0))
                                });
                        let __code_68 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}, {0}", __binding_2,
                                            __binding_3))
                                });
                        let __code_69 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0})", __binding_4))
                                });
                        suggestions.push((__binding_5, __code_67));
                        suggestions.push((__binding_6, __code_68));
                        suggestions.push((__binding_7, __code_69));
                        diag.store_args();
                        diag.arg("ne", __binding_0);
                        diag.arg("deref_left", __binding_1);
                        diag.arg("deref_right", __binding_2);
                        diag.arg("l_modifiers", __binding_3);
                        diag.arg("r_modifiers", __binding_4);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_addr_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1860#[multipart_suggestion(
1861    lint_addr_suggestion,
1862    style = "verbose",
1863    // FIXME(#53934): make machine-applicable again
1864    applicability = "maybe-incorrect"
1865)]
1866pub(crate) struct AmbiguousWidePointerComparisonsAddrSuggestion<'a> {
1867    pub(crate) ne: &'a str,
1868    pub(crate) deref_left: &'a str,
1869    pub(crate) deref_right: &'a str,
1870    pub(crate) l_modifiers: &'a str,
1871    pub(crate) r_modifiers: &'a str,
1872    #[suggestion_part(code = "{ne}std::ptr::addr_eq({deref_left}")]
1873    pub(crate) left: Span,
1874    #[suggestion_part(code = "{l_modifiers}, {deref_right}")]
1875    pub(crate) middle: Span,
1876    #[suggestion_part(code = "{r_modifiers})")]
1877    pub(crate) right: Span,
1878}
1879
1880#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            AmbiguousWidePointerComparisonsCastSuggestion<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousWidePointerComparisonsCastSuggestion {
                        deref_left: __binding_0,
                        deref_right: __binding_1,
                        paren_left: __binding_2,
                        paren_right: __binding_3,
                        l_modifiers: __binding_4,
                        r_modifiers: __binding_5,
                        left_before: __binding_6,
                        left_after: __binding_7,
                        right_before: __binding_8,
                        right_after: __binding_9 } => {
                        let mut suggestions = Vec::new();
                        let __code_70 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("({0}", __binding_0))
                                });
                        let __code_71 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}{1}.cast::<()>()",
                                            __binding_4, __binding_2))
                                });
                        let __code_72 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("({0}", __binding_1))
                                });
                        let __code_73 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}{0}.cast::<()>()",
                                            __binding_3, __binding_5))
                                });
                        if let Some(__binding_6) = __binding_6 {
                            suggestions.push((__binding_6, __code_70));
                        }
                        suggestions.push((__binding_7, __code_71));
                        if let Some(__binding_8) = __binding_8 {
                            suggestions.push((__binding_8, __code_72));
                        }
                        suggestions.push((__binding_9, __code_73));
                        diag.store_args();
                        diag.arg("deref_left", __binding_0);
                        diag.arg("deref_right", __binding_1);
                        diag.arg("paren_left", __binding_2);
                        diag.arg("paren_right", __binding_3);
                        diag.arg("l_modifiers", __binding_4);
                        diag.arg("r_modifiers", __binding_5);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_cast_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1881#[multipart_suggestion(
1882    lint_cast_suggestion,
1883    style = "verbose",
1884    // FIXME(#53934): make machine-applicable again
1885    applicability = "maybe-incorrect"
1886)]
1887pub(crate) struct AmbiguousWidePointerComparisonsCastSuggestion<'a> {
1888    pub(crate) deref_left: &'a str,
1889    pub(crate) deref_right: &'a str,
1890    pub(crate) paren_left: &'a str,
1891    pub(crate) paren_right: &'a str,
1892    pub(crate) l_modifiers: &'a str,
1893    pub(crate) r_modifiers: &'a str,
1894    #[suggestion_part(code = "({deref_left}")]
1895    pub(crate) left_before: Option<Span>,
1896    #[suggestion_part(code = "{l_modifiers}{paren_left}.cast::<()>()")]
1897    pub(crate) left_after: Span,
1898    #[suggestion_part(code = "({deref_right}")]
1899    pub(crate) right_before: Option<Span>,
1900    #[suggestion_part(code = "{r_modifiers}{paren_right}.cast::<()>()")]
1901    pub(crate) right_after: Span,
1902}
1903
1904#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for
            AmbiguousWidePointerComparisonsExpectSuggestion<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousWidePointerComparisonsExpectSuggestion {
                        paren_left: __binding_0,
                        paren_right: __binding_1,
                        before: __binding_2,
                        after: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_74 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{ #[expect(ambiguous_wide_pointer_comparisons, reason = \"...\")] {0}",
                                            __binding_0))
                                });
                        let __code_75 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0} }}", __binding_1))
                                });
                        suggestions.push((__binding_2, __code_74));
                        suggestions.push((__binding_3, __code_75));
                        diag.store_args();
                        diag.arg("paren_left", __binding_0);
                        diag.arg("paren_right", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_expect_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1905#[multipart_suggestion(
1906    lint_expect_suggestion,
1907    style = "verbose",
1908    // FIXME(#53934): make machine-applicable again
1909    applicability = "maybe-incorrect"
1910)]
1911pub(crate) struct AmbiguousWidePointerComparisonsExpectSuggestion<'a> {
1912    pub(crate) paren_left: &'a str,
1913    pub(crate) paren_right: &'a str,
1914    // FIXME(#127436): Adjust once resolved
1915    #[suggestion_part(
1916        code = r#"{{ #[expect(ambiguous_wide_pointer_comparisons, reason = "...")] {paren_left}"#
1917    )]
1918    pub(crate) before: Span,
1919    #[suggestion_part(code = "{paren_right} }}")]
1920    pub(crate) after: Span,
1921}
1922
1923#[derive(const _: () =
    {
        impl<'__a, 'a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            UnpredictableFunctionPointerComparisons<'a, 'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnpredictableFunctionPointerComparisons::Suggestion {
                        sugg: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_unpredictable_fn_pointer_comparisons);
                        diag.note(crate::fluent_generated::lint_note_duplicated_fn);
                        diag.note(crate::fluent_generated::lint_note_deduplicated_fn);
                        diag.note(crate::fluent_generated::lint_note_visit_fn_addr_eq);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                    UnpredictableFunctionPointerComparisons::Warn => {
                        diag.primary_message(crate::fluent_generated::lint_unpredictable_fn_pointer_comparisons);
                        diag.note(crate::fluent_generated::lint_note_duplicated_fn);
                        diag.note(crate::fluent_generated::lint_note_deduplicated_fn);
                        diag.note(crate::fluent_generated::lint_note_visit_fn_addr_eq);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
1924pub(crate) enum UnpredictableFunctionPointerComparisons<'a, 'tcx> {
1925    #[diag(lint_unpredictable_fn_pointer_comparisons)]
1926    #[note(lint_note_duplicated_fn)]
1927    #[note(lint_note_deduplicated_fn)]
1928    #[note(lint_note_visit_fn_addr_eq)]
1929    Suggestion {
1930        #[subdiagnostic]
1931        sugg: UnpredictableFunctionPointerComparisonsSuggestion<'a, 'tcx>,
1932    },
1933    #[diag(lint_unpredictable_fn_pointer_comparisons)]
1934    #[note(lint_note_duplicated_fn)]
1935    #[note(lint_note_deduplicated_fn)]
1936    #[note(lint_note_visit_fn_addr_eq)]
1937    Warn,
1938}
1939
1940#[derive(const _: () =
    {
        impl<'a, 'tcx> rustc_errors::Subdiagnostic for
            UnpredictableFunctionPointerComparisonsSuggestion<'a, 'tcx> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnpredictableFunctionPointerComparisonsSuggestion::FnAddrEq {
                        ne: __binding_0,
                        deref_left: __binding_1,
                        deref_right: __binding_2,
                        left: __binding_3,
                        middle: __binding_4,
                        right: __binding_5 } => {
                        let mut suggestions = Vec::new();
                        let __code_76 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}std::ptr::fn_addr_eq({0}",
                                            __binding_1, __binding_0))
                                });
                        let __code_77 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(", {0}", __binding_2))
                                });
                        let __code_78 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_3, __code_76));
                        suggestions.push((__binding_4, __code_77));
                        suggestions.push((__binding_5, __code_78));
                        diag.store_args();
                        diag.arg("ne", __binding_0);
                        diag.arg("deref_left", __binding_1);
                        diag.arg("deref_right", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_fn_addr_eq_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    UnpredictableFunctionPointerComparisonsSuggestion::FnAddrEqWithCast {
                        ne: __binding_0,
                        deref_left: __binding_1,
                        deref_right: __binding_2,
                        fn_sig: __binding_3,
                        left: __binding_4,
                        middle: __binding_5,
                        right: __binding_6 } => {
                        let mut suggestions = Vec::new();
                        let __code_79 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1}std::ptr::fn_addr_eq({0}",
                                            __binding_1, __binding_0))
                                });
                        let __code_80 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(", {0}", __binding_2))
                                });
                        let __code_81 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" as {0})", __binding_3))
                                });
                        suggestions.push((__binding_4, __code_79));
                        suggestions.push((__binding_5, __code_80));
                        suggestions.push((__binding_6, __code_81));
                        diag.store_args();
                        diag.arg("ne", __binding_0);
                        diag.arg("deref_left", __binding_1);
                        diag.arg("deref_right", __binding_2);
                        diag.arg("fn_sig", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_fn_addr_eq_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1941pub(crate) enum UnpredictableFunctionPointerComparisonsSuggestion<'a, 'tcx> {
1942    #[multipart_suggestion(
1943        lint_fn_addr_eq_suggestion,
1944        style = "verbose",
1945        applicability = "maybe-incorrect"
1946    )]
1947    FnAddrEq {
1948        ne: &'a str,
1949        deref_left: &'a str,
1950        deref_right: &'a str,
1951        #[suggestion_part(code = "{ne}std::ptr::fn_addr_eq({deref_left}")]
1952        left: Span,
1953        #[suggestion_part(code = ", {deref_right}")]
1954        middle: Span,
1955        #[suggestion_part(code = ")")]
1956        right: Span,
1957    },
1958    #[multipart_suggestion(
1959        lint_fn_addr_eq_suggestion,
1960        style = "verbose",
1961        applicability = "maybe-incorrect"
1962    )]
1963    FnAddrEqWithCast {
1964        ne: &'a str,
1965        deref_left: &'a str,
1966        deref_right: &'a str,
1967        fn_sig: rustc_middle::ty::PolyFnSig<'tcx>,
1968        #[suggestion_part(code = "{ne}std::ptr::fn_addr_eq({deref_left}")]
1969        left: Span,
1970        #[suggestion_part(code = ", {deref_right}")]
1971        middle: Span,
1972        #[suggestion_part(code = " as {fn_sig})")]
1973        right: Span,
1974    },
1975}
1976
1977pub(crate) struct ImproperCTypes<'a> {
1978    pub ty: Ty<'a>,
1979    pub desc: &'a str,
1980    pub label: Span,
1981    pub help: Option<DiagMessage>,
1982    pub note: DiagMessage,
1983    pub span_note: Option<Span>,
1984}
1985
1986// Used because of the complexity of Option<DiagMessage>, DiagMessage, and Option<Span>
1987impl<'a> LintDiagnostic<'a, ()> for ImproperCTypes<'_> {
1988    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
1989        diag.primary_message(fluent::lint_improper_ctypes);
1990        diag.arg("ty", self.ty);
1991        diag.arg("desc", self.desc);
1992        diag.span_label(self.label, fluent::lint_label);
1993        if let Some(help) = self.help {
1994            diag.help(help);
1995        }
1996        diag.note(self.note);
1997        if let Some(note) = self.span_note {
1998            diag.span_note(note, fluent::lint_note);
1999        }
2000    }
2001}
2002
2003#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            ImproperGpuKernelArg<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ImproperGpuKernelArg { ty: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_improper_gpu_kernel_arg);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("ty", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2004#[diag(lint_improper_gpu_kernel_arg)]
2005#[help]
2006pub(crate) struct ImproperGpuKernelArg<'a> {
2007    pub ty: Ty<'a>,
2008}
2009
2010#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            MissingGpuKernelExportName {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    MissingGpuKernelExportName => {
                        diag.primary_message(crate::fluent_generated::lint_missing_gpu_kernel_export_name);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2011#[diag(lint_missing_gpu_kernel_export_name)]
2012#[help]
2013#[note]
2014pub(crate) struct MissingGpuKernelExportName;
2015
2016#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            VariantSizeDifferencesDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    VariantSizeDifferencesDiag { largest: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_variant_size_differences);
                        ;
                        diag.arg("largest", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2017#[diag(lint_variant_size_differences)]
2018pub(crate) struct VariantSizeDifferencesDiag {
2019    pub largest: u64,
2020}
2021
2022#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AtomicOrderingLoad {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AtomicOrderingLoad => {
                        diag.primary_message(crate::fluent_generated::lint_atomic_ordering_load);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2023#[diag(lint_atomic_ordering_load)]
2024#[help]
2025pub(crate) struct AtomicOrderingLoad;
2026
2027#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AtomicOrderingStore {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AtomicOrderingStore => {
                        diag.primary_message(crate::fluent_generated::lint_atomic_ordering_store);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2028#[diag(lint_atomic_ordering_store)]
2029#[help]
2030pub(crate) struct AtomicOrderingStore;
2031
2032#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AtomicOrderingFence {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AtomicOrderingFence => {
                        diag.primary_message(crate::fluent_generated::lint_atomic_ordering_fence);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2033#[diag(lint_atomic_ordering_fence)]
2034#[help]
2035pub(crate) struct AtomicOrderingFence;
2036
2037#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            InvalidAtomicOrderingDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidAtomicOrderingDiag {
                        method: __binding_0, fail_order_arg_span: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_atomic_ordering_invalid);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("method", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2038#[diag(lint_atomic_ordering_invalid)]
2039#[help]
2040pub(crate) struct InvalidAtomicOrderingDiag {
2041    pub method: Symbol,
2042    #[label]
2043    pub fail_order_arg_span: Span,
2044}
2045
2046// unused.rs
2047#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for UnusedOp<'a>
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedOp {
                        op: __binding_0, label: __binding_1, suggestion: __binding_2
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_op);
                        ;
                        diag.arg("op", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2048#[diag(lint_unused_op)]
2049pub(crate) struct UnusedOp<'a> {
2050    pub op: &'a str,
2051    #[label]
2052    pub label: Span,
2053    #[subdiagnostic]
2054    pub suggestion: UnusedOpSuggestion,
2055}
2056
2057#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnusedOpSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnusedOpSuggestion::NormalExpr { span: __binding_0 } => {
                        let __code_82 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let _ = "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_82, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    UnusedOpSuggestion::BlockTailExpr {
                        before_span: __binding_0, after_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_83 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("let _ = "))
                                });
                        let __code_84 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(";"))
                                });
                        suggestions.push((__binding_0, __code_83));
                        suggestions.push((__binding_1, __code_84));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2058pub(crate) enum UnusedOpSuggestion {
2059    #[suggestion(
2060        lint_suggestion,
2061        style = "verbose",
2062        code = "let _ = ",
2063        applicability = "maybe-incorrect"
2064    )]
2065    NormalExpr {
2066        #[primary_span]
2067        span: Span,
2068    },
2069    #[multipart_suggestion(lint_suggestion, style = "verbose", applicability = "maybe-incorrect")]
2070    BlockTailExpr {
2071        #[suggestion_part(code = "let _ = ")]
2072        before_span: Span,
2073        #[suggestion_part(code = ";")]
2074        after_span: Span,
2075    },
2076}
2077
2078#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedResult<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedResult { ty: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_result);
                        ;
                        diag.arg("ty", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2079#[diag(lint_unused_result)]
2080pub(crate) struct UnusedResult<'a> {
2081    pub ty: Ty<'a>,
2082}
2083
2084// FIXME(davidtwco): this isn't properly translatable because of the
2085// pre/post strings
2086#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedClosure<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedClosure {
                        count: __binding_0, pre: __binding_1, post: __binding_2 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_unused_closure);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("count", __binding_0);
                        diag.arg("pre", __binding_1);
                        diag.arg("post", __binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2087#[diag(lint_unused_closure)]
2088#[note]
2089pub(crate) struct UnusedClosure<'a> {
2090    pub count: usize,
2091    pub pre: &'a str,
2092    pub post: &'a str,
2093}
2094
2095// FIXME(davidtwco): this isn't properly translatable because of the
2096// pre/post strings
2097#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedCoroutine<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedCoroutine {
                        count: __binding_0, pre: __binding_1, post: __binding_2 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_unused_coroutine);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("count", __binding_0);
                        diag.arg("pre", __binding_1);
                        diag.arg("post", __binding_2);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2098#[diag(lint_unused_coroutine)]
2099#[note]
2100pub(crate) struct UnusedCoroutine<'a> {
2101    pub count: usize,
2102    pub pre: &'a str,
2103    pub post: &'a str,
2104}
2105
2106// FIXME(davidtwco): this isn't properly translatable because of the pre/post
2107// strings
2108pub(crate) struct UnusedDef<'a, 'b> {
2109    pub pre: &'a str,
2110    pub post: &'a str,
2111    pub cx: &'a LateContext<'b>,
2112    pub def_id: DefId,
2113    pub note: Option<Symbol>,
2114    pub suggestion: Option<UnusedDefSuggestion>,
2115}
2116
2117#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnusedDefSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnusedDefSuggestion::NormalExpr { span: __binding_0 } => {
                        let __code_85 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let _ = "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_85, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    UnusedDefSuggestion::BlockTailExpr {
                        before_span: __binding_0, after_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_86 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("let _ = "))
                                });
                        let __code_87 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(";"))
                                });
                        suggestions.push((__binding_0, __code_86));
                        suggestions.push((__binding_1, __code_87));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2118
2119pub(crate) enum UnusedDefSuggestion {
2120    #[suggestion(
2121        lint_suggestion,
2122        style = "verbose",
2123        code = "let _ = ",
2124        applicability = "maybe-incorrect"
2125    )]
2126    NormalExpr {
2127        #[primary_span]
2128        span: Span,
2129    },
2130    #[multipart_suggestion(lint_suggestion, style = "verbose", applicability = "maybe-incorrect")]
2131    BlockTailExpr {
2132        #[suggestion_part(code = "let _ = ")]
2133        before_span: Span,
2134        #[suggestion_part(code = ";")]
2135        after_span: Span,
2136    },
2137}
2138
2139// Needed because of def_path_str
2140impl<'a> LintDiagnostic<'a, ()> for UnusedDef<'_, '_> {
2141    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
2142        diag.primary_message(fluent::lint_unused_def);
2143        diag.arg("pre", self.pre);
2144        diag.arg("post", self.post);
2145        diag.arg("def", self.cx.tcx.def_path_str(self.def_id));
2146        // check for #[must_use = "..."]
2147        if let Some(note) = self.note {
2148            diag.note(note.to_string());
2149        }
2150        if let Some(sugg) = self.suggestion {
2151            diag.subdiagnostic(sugg);
2152        }
2153    }
2154}
2155
2156#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            PathStatementDrop {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    PathStatementDrop { sub: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_path_statement_drop);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2157#[diag(lint_path_statement_drop)]
2158pub(crate) struct PathStatementDrop {
2159    #[subdiagnostic]
2160    pub sub: PathStatementDropSub,
2161}
2162
2163#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for PathStatementDropSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    PathStatementDropSub::Suggestion {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_88 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("drop({0});",
                                                        __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_88, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    PathStatementDropSub::Help { span: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_help);
                        diag.span_help(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2164pub(crate) enum PathStatementDropSub {
2165    #[suggestion(lint_suggestion, code = "drop({snippet});", applicability = "machine-applicable")]
2166    Suggestion {
2167        #[primary_span]
2168        span: Span,
2169        snippet: String,
2170    },
2171    #[help(lint_help)]
2172    Help {
2173        #[primary_span]
2174        span: Span,
2175    },
2176}
2177
2178#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            PathStatementNoEffect {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    PathStatementNoEffect => {
                        diag.primary_message(crate::fluent_generated::lint_path_statement_no_effect);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2179#[diag(lint_path_statement_no_effect)]
2180pub(crate) struct PathStatementNoEffect;
2181
2182#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedDelim<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedDelim {
                        delim: __binding_0,
                        item: __binding_1,
                        suggestion: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_delim);
                        ;
                        diag.arg("delim", __binding_0);
                        diag.arg("item", __binding_1);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2183#[diag(lint_unused_delim)]
2184pub(crate) struct UnusedDelim<'a> {
2185    pub delim: &'static str,
2186    pub item: &'a str,
2187    #[subdiagnostic]
2188    pub suggestion: Option<UnusedDelimSuggestion>,
2189}
2190
2191#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnusedDelimSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnusedDelimSuggestion {
                        start_span: __binding_0,
                        start_replace: __binding_1,
                        end_span: __binding_2,
                        end_replace: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_89 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                });
                        let __code_90 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_3))
                                });
                        suggestions.push((__binding_0, __code_89));
                        suggestions.push((__binding_2, __code_90));
                        diag.store_args();
                        diag.arg("start_replace", __binding_1);
                        diag.arg("end_replace", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2192#[multipart_suggestion(lint_suggestion, applicability = "machine-applicable")]
2193pub(crate) struct UnusedDelimSuggestion {
2194    #[suggestion_part(code = "{start_replace}")]
2195    pub start_span: Span,
2196    pub start_replace: &'static str,
2197    #[suggestion_part(code = "{end_replace}")]
2198    pub end_span: Span,
2199    pub end_replace: &'static str,
2200}
2201
2202#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedImportBracesDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedImportBracesDiag { node: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_import_braces);
                        ;
                        diag.arg("node", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2203#[diag(lint_unused_import_braces)]
2204pub(crate) struct UnusedImportBracesDiag {
2205    pub node: Symbol,
2206}
2207
2208#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedAllocationDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedAllocationDiag => {
                        diag.primary_message(crate::fluent_generated::lint_unused_allocation);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2209#[diag(lint_unused_allocation)]
2210pub(crate) struct UnusedAllocationDiag;
2211
2212#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedAllocationMutDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedAllocationMutDiag => {
                        diag.primary_message(crate::fluent_generated::lint_unused_allocation_mut);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2213#[diag(lint_unused_allocation_mut)]
2214pub(crate) struct UnusedAllocationMutDiag;
2215
2216pub(crate) struct AsyncFnInTraitDiag {
2217    pub sugg: Option<Vec<(Span, String)>>,
2218}
2219
2220impl<'a> LintDiagnostic<'a, ()> for AsyncFnInTraitDiag {
2221    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, ()>) {
2222        diag.primary_message(fluent::lint_async_fn_in_trait);
2223        diag.note(fluent::lint_note);
2224        if let Some(sugg) = self.sugg {
2225            diag.multipart_suggestion(fluent::lint_suggestion, sugg, Applicability::MaybeIncorrect);
2226        }
2227    }
2228}
2229
2230#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnitBindingsDiag
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnitBindingsDiag { label: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_unit_bindings);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2231#[diag(lint_unit_bindings)]
2232pub(crate) struct UnitBindingsDiag {
2233    #[label]
2234    pub label: Span,
2235}
2236
2237#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for InvalidAsmLabel
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidAsmLabel::Named { missing_precise_span: __binding_0 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_asm_label_named);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        if __binding_0 {
                            diag.note(crate::fluent_generated::lint_invalid_asm_label_no_span);
                        }
                        diag
                    }
                    InvalidAsmLabel::FormatArg {
                        missing_precise_span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_asm_label_format_arg);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        diag.note(crate::fluent_generated::lint_note1);
                        diag.note(crate::fluent_generated::lint_note2);
                        ;
                        if __binding_0 {
                            diag.note(crate::fluent_generated::lint_invalid_asm_label_no_span);
                        }
                        diag
                    }
                    InvalidAsmLabel::Binary {
                        missing_precise_span: __binding_0, span: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_asm_label_binary);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        diag.note(crate::fluent_generated::lint_note1);
                        diag.note(crate::fluent_generated::lint_note2);
                        ;
                        if __binding_0 {
                            diag.note(crate::fluent_generated::lint_invalid_asm_label_no_span);
                        }
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2238pub(crate) enum InvalidAsmLabel {
2239    #[diag(lint_invalid_asm_label_named)]
2240    #[help]
2241    #[note]
2242    Named {
2243        #[note(lint_invalid_asm_label_no_span)]
2244        missing_precise_span: bool,
2245    },
2246    #[diag(lint_invalid_asm_label_format_arg)]
2247    #[help]
2248    #[note(lint_note1)]
2249    #[note(lint_note2)]
2250    FormatArg {
2251        #[note(lint_invalid_asm_label_no_span)]
2252        missing_precise_span: bool,
2253    },
2254    #[diag(lint_invalid_asm_label_binary)]
2255    #[help]
2256    #[note(lint_note1)]
2257    #[note(lint_note2)]
2258    Binary {
2259        #[note(lint_invalid_asm_label_no_span)]
2260        missing_precise_span: bool,
2261        // hack to get a label on the whole span, must match the emitted span
2262        #[label]
2263        span: Span,
2264    },
2265}
2266
2267#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgCargoHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgCargoHelp::LintCfg {
                        cargo_toml_lint_cfg: __binding_0 } => {
                        diag.store_args();
                        diag.arg("cargo_toml_lint_cfg", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_add_cargo_feature);
                        diag.help(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_add_cargo_toml_lint_cfg);
                        diag.help(__message);
                        diag.restore_args();
                    }
                    UnexpectedCfgCargoHelp::LintCfgAndBuildRs {
                        cargo_toml_lint_cfg: __binding_0,
                        build_rs_println: __binding_1 } => {
                        diag.store_args();
                        diag.arg("cargo_toml_lint_cfg", __binding_0);
                        diag.arg("build_rs_println", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_add_cargo_feature);
                        diag.help(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_add_cargo_toml_lint_cfg);
                        diag.help(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_add_build_rs_println);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2268pub(crate) enum UnexpectedCfgCargoHelp {
2269    #[help(lint_unexpected_cfg_add_cargo_feature)]
2270    #[help(lint_unexpected_cfg_add_cargo_toml_lint_cfg)]
2271    LintCfg { cargo_toml_lint_cfg: String },
2272    #[help(lint_unexpected_cfg_add_cargo_feature)]
2273    #[help(lint_unexpected_cfg_add_cargo_toml_lint_cfg)]
2274    #[help(lint_unexpected_cfg_add_build_rs_println)]
2275    LintCfgAndBuildRs { cargo_toml_lint_cfg: String, build_rs_println: String },
2276}
2277
2278impl UnexpectedCfgCargoHelp {
2279    fn cargo_toml_lint_cfg(unescaped: &str) -> String {
2280        ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("\n [lints.rust]\n unexpected_cfgs = {{ level = \"warn\", check-cfg = [\'{0}\'] }}",
                unescaped))
    })format!(
2281            "\n [lints.rust]\n unexpected_cfgs = {{ level = \"warn\", check-cfg = ['{unescaped}'] }}"
2282        )
2283    }
2284
2285    pub(crate) fn lint_cfg(unescaped: &str) -> Self {
2286        UnexpectedCfgCargoHelp::LintCfg {
2287            cargo_toml_lint_cfg: Self::cargo_toml_lint_cfg(unescaped),
2288        }
2289    }
2290
2291    pub(crate) fn lint_cfg_and_build_rs(unescaped: &str, escaped: &str) -> Self {
2292        UnexpectedCfgCargoHelp::LintCfgAndBuildRs {
2293            cargo_toml_lint_cfg: Self::cargo_toml_lint_cfg(unescaped),
2294            build_rs_println: ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("println!(\"cargo::rustc-check-cfg={0}\");",
                escaped))
    })format!("println!(\"cargo::rustc-check-cfg={escaped}\");"),
2295        }
2296    }
2297}
2298
2299#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgRustcHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgRustcHelp { cmdline_arg: __binding_0 } => {
                        diag.store_args();
                        diag.arg("cmdline_arg", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_add_cmdline_arg);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2300#[help(lint_unexpected_cfg_add_cmdline_arg)]
2301pub(crate) struct UnexpectedCfgRustcHelp {
2302    pub cmdline_arg: String,
2303}
2304
2305impl UnexpectedCfgRustcHelp {
2306    pub(crate) fn new(unescaped: &str) -> Self {
2307        Self { cmdline_arg: ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("--check-cfg={0}", unescaped))
    })format!("--check-cfg={unescaped}") }
2308    }
2309}
2310
2311#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgRustcMacroHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgRustcMacroHelp {
                        macro_kind: __binding_0, macro_name: __binding_1 } => {
                        diag.store_args();
                        diag.arg("macro_kind", __binding_0);
                        diag.arg("macro_name", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_from_external_macro_origin);
                        diag.note(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_from_external_macro_refer);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2312#[note(lint_unexpected_cfg_from_external_macro_origin)]
2313#[help(lint_unexpected_cfg_from_external_macro_refer)]
2314pub(crate) struct UnexpectedCfgRustcMacroHelp {
2315    pub macro_kind: &'static str,
2316    pub macro_name: Symbol,
2317}
2318
2319#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgCargoMacroHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgCargoMacroHelp {
                        macro_kind: __binding_0,
                        macro_name: __binding_1,
                        crate_name: __binding_2 } => {
                        diag.store_args();
                        diag.arg("macro_kind", __binding_0);
                        diag.arg("macro_name", __binding_1);
                        diag.arg("crate_name", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_from_external_macro_origin);
                        diag.note(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_from_external_macro_refer);
                        diag.help(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_cargo_update);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2320#[note(lint_unexpected_cfg_from_external_macro_origin)]
2321#[help(lint_unexpected_cfg_from_external_macro_refer)]
2322#[help(lint_unexpected_cfg_cargo_update)]
2323pub(crate) struct UnexpectedCfgCargoMacroHelp {
2324    pub macro_kind: &'static str,
2325    pub macro_name: Symbol,
2326    pub crate_name: Symbol,
2327}
2328
2329#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnexpectedCfgName {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnexpectedCfgName {
                        code_sugg: __binding_0,
                        invocation_help: __binding_1,
                        name: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_unexpected_cfg_name);
                        ;
                        diag.arg("name", __binding_2);
                        diag.subdiagnostic(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2330#[diag(lint_unexpected_cfg_name)]
2331pub(crate) struct UnexpectedCfgName {
2332    #[subdiagnostic]
2333    pub code_sugg: unexpected_cfg_name::CodeSuggestion,
2334    #[subdiagnostic]
2335    pub invocation_help: unexpected_cfg_name::InvocationHelp,
2336
2337    pub name: Symbol,
2338}
2339
2340pub(crate) mod unexpected_cfg_name {
2341    use rustc_errors::DiagSymbolList;
2342    use rustc_macros::Subdiagnostic;
2343    use rustc_span::{Ident, Span, Symbol};
2344
2345    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for CodeSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    CodeSuggestion::DefineFeatures => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_define_features);
                        diag.help(__message);
                        diag.restore_args();
                    }
                    CodeSuggestion::VersionSyntax {
                        between_name_and_value: __binding_0,
                        after_value: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_91 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_92 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_91));
                        suggestions.push((__binding_1, __code_92));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_version_syntax);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    CodeSuggestion::SimilarNameAndValue {
                        span: __binding_0, code: __binding_1 } => {
                        let __code_93 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("code", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_similar_name_value);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_93, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    CodeSuggestion::SimilarNameNoValue {
                        span: __binding_0, code: __binding_1 } => {
                        let __code_94 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("code", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_similar_name_no_value);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_94, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    CodeSuggestion::SimilarNameDifferentValues {
                        span: __binding_0, code: __binding_1, expected: __binding_2
                        } => {
                        let __code_95 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        if let Some(__binding_2) = __binding_2 {
                            __binding_2.add_to_diag(diag);
                        }
                        diag.store_args();
                        diag.arg("code", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_similar_name_different_values);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_95, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    CodeSuggestion::SimilarName {
                        span: __binding_0, code: __binding_1, expected: __binding_2
                        } => {
                        let __code_96 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        if let Some(__binding_2) = __binding_2 {
                            __binding_2.add_to_diag(diag);
                        }
                        diag.store_args();
                        diag.arg("code", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_similar_name);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_96, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    CodeSuggestion::SimilarValues {
                        with_similar_values: __binding_0,
                        expected_names: __binding_1 } => {
                        for __binding_0 in __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        diag.store_args();
                        diag.restore_args();
                    }
                    CodeSuggestion::BooleanLiteral {
                        span: __binding_0, literal: __binding_1 } => {
                        let __code_97 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("literal", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_boolean);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_97, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2346    pub(crate) enum CodeSuggestion {
2347        #[help(lint_unexpected_cfg_define_features)]
2348        DefineFeatures,
2349        #[multipart_suggestion(
2350            lint_unexpected_cfg_name_version_syntax,
2351            applicability = "machine-applicable"
2352        )]
2353        VersionSyntax {
2354            #[suggestion_part(code = "(")]
2355            between_name_and_value: Span,
2356            #[suggestion_part(code = ")")]
2357            after_value: Span,
2358        },
2359        #[suggestion(
2360            lint_unexpected_cfg_name_similar_name_value,
2361            applicability = "maybe-incorrect",
2362            code = "{code}"
2363        )]
2364        SimilarNameAndValue {
2365            #[primary_span]
2366            span: Span,
2367            code: String,
2368        },
2369        #[suggestion(
2370            lint_unexpected_cfg_name_similar_name_no_value,
2371            applicability = "maybe-incorrect",
2372            code = "{code}"
2373        )]
2374        SimilarNameNoValue {
2375            #[primary_span]
2376            span: Span,
2377            code: String,
2378        },
2379        #[suggestion(
2380            lint_unexpected_cfg_name_similar_name_different_values,
2381            applicability = "maybe-incorrect",
2382            code = "{code}"
2383        )]
2384        SimilarNameDifferentValues {
2385            #[primary_span]
2386            span: Span,
2387            code: String,
2388            #[subdiagnostic]
2389            expected: Option<ExpectedValues>,
2390        },
2391        #[suggestion(
2392            lint_unexpected_cfg_name_similar_name,
2393            applicability = "maybe-incorrect",
2394            code = "{code}"
2395        )]
2396        SimilarName {
2397            #[primary_span]
2398            span: Span,
2399            code: String,
2400            #[subdiagnostic]
2401            expected: Option<ExpectedValues>,
2402        },
2403        SimilarValues {
2404            #[subdiagnostic]
2405            with_similar_values: Vec<FoundWithSimilarValue>,
2406            #[subdiagnostic]
2407            expected_names: Option<ExpectedNames>,
2408        },
2409        #[suggestion(
2410            lint_unexpected_cfg_boolean,
2411            applicability = "machine-applicable",
2412            style = "verbose",
2413            code = "{literal}"
2414        )]
2415        BooleanLiteral {
2416            #[primary_span]
2417            span: Span,
2418            literal: bool,
2419        },
2420    }
2421
2422    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedValues {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedValues {
                        best_match: __binding_0, possibilities: __binding_1 } => {
                        diag.store_args();
                        diag.arg("best_match", __binding_0);
                        diag.arg("possibilities", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_expected_values);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2423    #[help(lint_unexpected_cfg_name_expected_values)]
2424    pub(crate) struct ExpectedValues {
2425        pub best_match: Symbol,
2426        pub possibilities: DiagSymbolList,
2427    }
2428
2429    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for FoundWithSimilarValue {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FoundWithSimilarValue { span: __binding_0, code: __binding_1
                        } => {
                        let __code_98 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("code", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_with_similar_value);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_98, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2430    #[suggestion(
2431        lint_unexpected_cfg_name_with_similar_value,
2432        applicability = "maybe-incorrect",
2433        code = "{code}"
2434    )]
2435    pub(crate) struct FoundWithSimilarValue {
2436        #[primary_span]
2437        pub span: Span,
2438        pub code: String,
2439    }
2440
2441    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedNames {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedNames {
                        possibilities: __binding_0, and_more: __binding_1 } => {
                        diag.store_args();
                        diag.arg("possibilities", __binding_0);
                        diag.arg("and_more", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_name_expected_names);
                        diag.help_once(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2442    #[help_once(lint_unexpected_cfg_name_expected_names)]
2443    pub(crate) struct ExpectedNames {
2444        pub possibilities: DiagSymbolList<Ident>,
2445        pub and_more: usize,
2446    }
2447
2448    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvocationHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvocationHelp::Cargo {
                        macro_help: __binding_0, help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_doc_cargo);
                        diag.note(__message);
                        diag.restore_args();
                    }
                    InvocationHelp::Rustc {
                        macro_help: __binding_0, help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        __binding_1.add_to_diag(diag);
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_doc_rustc);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2449    pub(crate) enum InvocationHelp {
2450        #[note(lint_unexpected_cfg_doc_cargo)]
2451        Cargo {
2452            #[subdiagnostic]
2453            macro_help: Option<super::UnexpectedCfgCargoMacroHelp>,
2454            #[subdiagnostic]
2455            help: Option<super::UnexpectedCfgCargoHelp>,
2456        },
2457        #[note(lint_unexpected_cfg_doc_rustc)]
2458        Rustc {
2459            #[subdiagnostic]
2460            macro_help: Option<super::UnexpectedCfgRustcMacroHelp>,
2461            #[subdiagnostic]
2462            help: super::UnexpectedCfgRustcHelp,
2463        },
2464    }
2465}
2466
2467#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnexpectedCfgValue {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnexpectedCfgValue {
                        code_sugg: __binding_0,
                        invocation_help: __binding_1,
                        has_value: __binding_2,
                        value: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_unexpected_cfg_value);
                        ;
                        diag.arg("has_value", __binding_2);
                        diag.arg("value", __binding_3);
                        diag.subdiagnostic(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2468#[diag(lint_unexpected_cfg_value)]
2469pub(crate) struct UnexpectedCfgValue {
2470    #[subdiagnostic]
2471    pub code_sugg: unexpected_cfg_value::CodeSuggestion,
2472    #[subdiagnostic]
2473    pub invocation_help: unexpected_cfg_value::InvocationHelp,
2474
2475    pub has_value: bool,
2476    pub value: String,
2477}
2478
2479pub(crate) mod unexpected_cfg_value {
2480    use rustc_errors::DiagSymbolList;
2481    use rustc_macros::Subdiagnostic;
2482    use rustc_span::{Span, Symbol};
2483
2484    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for CodeSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    CodeSuggestion::ChangeValue {
                        expected_values: __binding_0, suggestion: __binding_1 } => {
                        __binding_0.add_to_diag(diag);
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        diag.store_args();
                        diag.restore_args();
                    }
                    CodeSuggestion::RemoveValue {
                        suggestion: __binding_0, name: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        diag.store_args();
                        diag.arg("name", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_no_expected_value);
                        diag.note(__message);
                        diag.restore_args();
                    }
                    CodeSuggestion::RemoveCondition {
                        suggestion: __binding_0, name: __binding_1 } => {
                        __binding_0.add_to_diag(diag);
                        diag.store_args();
                        diag.arg("name", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_no_expected_values);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2485    pub(crate) enum CodeSuggestion {
2486        ChangeValue {
2487            #[subdiagnostic]
2488            expected_values: ExpectedValues,
2489            #[subdiagnostic]
2490            suggestion: Option<ChangeValueSuggestion>,
2491        },
2492        #[note(lint_unexpected_cfg_value_no_expected_value)]
2493        RemoveValue {
2494            #[subdiagnostic]
2495            suggestion: Option<RemoveValueSuggestion>,
2496
2497            name: Symbol,
2498        },
2499        #[note(lint_unexpected_cfg_value_no_expected_values)]
2500        RemoveCondition {
2501            #[subdiagnostic]
2502            suggestion: RemoveConditionSuggestion,
2503
2504            name: Symbol,
2505        },
2506    }
2507
2508    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ChangeValueSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ChangeValueSuggestion::SimilarName {
                        span: __binding_0, best_match: __binding_1 } => {
                        let __code_99 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\"{0}\"", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("best_match", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_similar_name);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_99, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    ChangeValueSuggestion::SpecifyValue {
                        span: __binding_0, first_possibility: __binding_1 } => {
                        let __code_100 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" = \"{0}\"",
                                                        __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("first_possibility", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_specify_value);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_100, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2509    pub(crate) enum ChangeValueSuggestion {
2510        #[suggestion(
2511            lint_unexpected_cfg_value_similar_name,
2512            code = r#""{best_match}""#,
2513            applicability = "maybe-incorrect"
2514        )]
2515        SimilarName {
2516            #[primary_span]
2517            span: Span,
2518            best_match: Symbol,
2519        },
2520        #[suggestion(
2521            lint_unexpected_cfg_value_specify_value,
2522            code = r#" = "{first_possibility}""#,
2523            applicability = "maybe-incorrect"
2524        )]
2525        SpecifyValue {
2526            #[primary_span]
2527            span: Span,
2528            first_possibility: Symbol,
2529        },
2530    }
2531
2532    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for RemoveValueSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RemoveValueSuggestion { span: __binding_0 } => {
                        let __code_101 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_remove_value);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_101, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2533    #[suggestion(
2534        lint_unexpected_cfg_value_remove_value,
2535        code = "",
2536        applicability = "maybe-incorrect"
2537    )]
2538    pub(crate) struct RemoveValueSuggestion {
2539        #[primary_span]
2540        pub span: Span,
2541    }
2542
2543    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for RemoveConditionSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RemoveConditionSuggestion { span: __binding_0 } => {
                        let __code_102 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_remove_condition);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_102, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2544    #[suggestion(
2545        lint_unexpected_cfg_value_remove_condition,
2546        code = "",
2547        applicability = "maybe-incorrect"
2548    )]
2549    pub(crate) struct RemoveConditionSuggestion {
2550        #[primary_span]
2551        pub span: Span,
2552    }
2553
2554    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedValues {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedValues {
                        name: __binding_0,
                        have_none_possibility: __binding_1,
                        possibilities: __binding_2,
                        and_more: __binding_3 } => {
                        diag.store_args();
                        diag.arg("name", __binding_0);
                        diag.arg("have_none_possibility", __binding_1);
                        diag.arg("possibilities", __binding_2);
                        diag.arg("and_more", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_expected_values);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2555    #[note(lint_unexpected_cfg_value_expected_values)]
2556    pub(crate) struct ExpectedValues {
2557        pub name: Symbol,
2558        pub have_none_possibility: bool,
2559        pub possibilities: DiagSymbolList,
2560        pub and_more: usize,
2561    }
2562
2563    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvocationHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvocationHelp::Cargo {
                        help: __binding_0, macro_help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_doc_cargo);
                        diag.note(__message);
                        diag.restore_args();
                    }
                    InvocationHelp::Rustc {
                        help: __binding_0, macro_help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_doc_rustc);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2564    pub(crate) enum InvocationHelp {
2565        #[note(lint_unexpected_cfg_doc_cargo)]
2566        Cargo {
2567            #[subdiagnostic]
2568            help: Option<CargoHelp>,
2569            #[subdiagnostic]
2570            macro_help: Option<super::UnexpectedCfgCargoMacroHelp>,
2571        },
2572        #[note(lint_unexpected_cfg_doc_rustc)]
2573        Rustc {
2574            #[subdiagnostic]
2575            help: Option<super::UnexpectedCfgRustcHelp>,
2576            #[subdiagnostic]
2577            macro_help: Option<super::UnexpectedCfgRustcMacroHelp>,
2578        },
2579    }
2580
2581    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for CargoHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    CargoHelp::AddFeature { value: __binding_0 } => {
                        diag.store_args();
                        diag.arg("value", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_value_add_feature);
                        diag.help(__message);
                        diag.restore_args();
                    }
                    CargoHelp::DefineFeatures => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unexpected_cfg_define_features);
                        diag.help(__message);
                        diag.restore_args();
                    }
                    CargoHelp::Other(__binding_0) => {
                        __binding_0.add_to_diag(diag);
                        diag.store_args();
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2582    pub(crate) enum CargoHelp {
2583        #[help(lint_unexpected_cfg_value_add_feature)]
2584        AddFeature {
2585            value: Symbol,
2586        },
2587        #[help(lint_unexpected_cfg_define_features)]
2588        DefineFeatures,
2589        Other(#[subdiagnostic] super::UnexpectedCfgCargoHelp),
2590    }
2591}
2592
2593#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedCrateDependency {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedCrateDependency {
                        extern_crate: __binding_0, local_crate: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_crate_dependency);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("extern_crate", __binding_0);
                        diag.arg("local_crate", __binding_1);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2594#[diag(lint_unused_crate_dependency)]
2595#[help]
2596pub(crate) struct UnusedCrateDependency {
2597    pub extern_crate: Symbol,
2598    pub local_crate: Symbol,
2599}
2600
2601// FIXME(jdonszelmann): duplicated in rustc_attr_parsing, should be moved there completely.
2602#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            IllFormedAttributeInput {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    IllFormedAttributeInput {
                        num_suggestions: __binding_0,
                        suggestions: __binding_1,
                        has_docs: __binding_2,
                        docs: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_ill_formed_attribute_input);
                        ;
                        diag.arg("num_suggestions", __binding_0);
                        diag.arg("suggestions", __binding_1);
                        diag.arg("docs", __binding_3);
                        if __binding_2 {
                            diag.note(crate::fluent_generated::_subdiag::note);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2603#[diag(lint_ill_formed_attribute_input)]
2604pub(crate) struct IllFormedAttributeInput {
2605    pub num_suggestions: usize,
2606    pub suggestions: DiagArgValue,
2607    #[note]
2608    pub has_docs: bool,
2609    pub docs: &'static str,
2610}
2611
2612#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnicodeTextFlow
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnicodeTextFlow {
                        comment_span: __binding_0,
                        characters: __binding_1,
                        suggestions: __binding_2,
                        num_codepoints: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_unicode_text_flow);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("num_codepoints", __binding_3);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        for __binding_1 in __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2613#[diag(lint_unicode_text_flow)]
2614#[note]
2615pub(crate) struct UnicodeTextFlow {
2616    #[label]
2617    pub comment_span: Span,
2618    #[subdiagnostic]
2619    pub characters: Vec<UnicodeCharNoteSub>,
2620    #[subdiagnostic]
2621    pub suggestions: Option<UnicodeTextFlowSuggestion>,
2622
2623    pub num_codepoints: usize,
2624}
2625
2626#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnicodeCharNoteSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnicodeCharNoteSub { span: __binding_0, c_debug: __binding_1
                        } => {
                        diag.store_args();
                        diag.arg("c_debug", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label_comment_char);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2627#[label(lint_label_comment_char)]
2628pub(crate) struct UnicodeCharNoteSub {
2629    #[primary_span]
2630    pub span: Span,
2631    pub c_debug: String,
2632}
2633
2634#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnicodeTextFlowSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnicodeTextFlowSuggestion { spans: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_103 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_103.clone()));
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2635#[multipart_suggestion(lint_suggestion, applicability = "machine-applicable", style = "hidden")]
2636pub(crate) struct UnicodeTextFlowSuggestion {
2637    #[suggestion_part(code = "")]
2638    pub spans: Vec<Span>,
2639}
2640
2641#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AbsPathWithModule {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AbsPathWithModule { sugg: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_abs_path_with_module);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2642#[diag(lint_abs_path_with_module)]
2643pub(crate) struct AbsPathWithModule {
2644    #[subdiagnostic]
2645    pub sugg: AbsPathWithModuleSugg,
2646}
2647
2648#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for AbsPathWithModuleSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AbsPathWithModuleSugg {
                        span: __binding_0,
                        applicability: __binding_1,
                        replacement: __binding_2 } => {
                        let __code_104 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replacement", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_104, __binding_1,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2649#[suggestion(lint_suggestion, code = "{replacement}")]
2650pub(crate) struct AbsPathWithModuleSugg {
2651    #[primary_span]
2652    pub span: Span,
2653    #[applicability]
2654    pub applicability: Applicability,
2655    pub replacement: String,
2656}
2657
2658#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            ElidedLifetimesInPaths {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ElidedLifetimesInPaths { subdiag: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_hidden_lifetime_parameters);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2659#[diag(lint_hidden_lifetime_parameters)]
2660pub(crate) struct ElidedLifetimesInPaths {
2661    #[subdiagnostic]
2662    pub subdiag: ElidedLifetimeInPathSubdiag,
2663}
2664
2665#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnusedImports {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedImports {
                        sugg: __binding_0,
                        test_module_span: __binding_1,
                        span_snippets: __binding_2,
                        num_snippets: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_imports);
                        ;
                        diag.arg("span_snippets", __binding_2);
                        diag.arg("num_snippets", __binding_3);
                        diag.subdiagnostic(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_help(__binding_1,
                                crate::fluent_generated::_subdiag::help);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2666#[diag(lint_unused_imports)]
2667pub(crate) struct UnusedImports {
2668    #[subdiagnostic]
2669    pub sugg: UnusedImportsSugg,
2670    #[help]
2671    pub test_module_span: Option<Span>,
2672
2673    pub span_snippets: DiagArgValue,
2674    pub num_snippets: usize,
2675}
2676
2677#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnusedImportsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnusedImportsSugg::RemoveWholeUse { span: __binding_0 } => {
                        let __code_105 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_remove_whole_use);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_105, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                    UnusedImportsSugg::RemoveImports {
                        remove_spans: __binding_0, num_to_remove: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_106 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_106.clone()));
                        }
                        diag.store_args();
                        diag.arg("num_to_remove", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_remove_imports);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2678pub(crate) enum UnusedImportsSugg {
2679    #[suggestion(
2680        lint_suggestion_remove_whole_use,
2681        applicability = "machine-applicable",
2682        code = "",
2683        style = "tool-only"
2684    )]
2685    RemoveWholeUse {
2686        #[primary_span]
2687        span: Span,
2688    },
2689    #[multipart_suggestion(
2690        lint_suggestion_remove_imports,
2691        applicability = "machine-applicable",
2692        style = "tool-only"
2693    )]
2694    RemoveImports {
2695        #[suggestion_part(code = "")]
2696        remove_spans: Vec<Span>,
2697        num_to_remove: usize,
2698    },
2699}
2700
2701#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for RedundantImport
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RedundantImport { subs: __binding_0, ident: __binding_1 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_redundant_import);
                        ;
                        diag.arg("ident", __binding_1);
                        for __binding_0 in __binding_0 {
                            diag.subdiagnostic(__binding_0);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2702#[diag(lint_redundant_import)]
2703pub(crate) struct RedundantImport {
2704    #[subdiagnostic]
2705    pub subs: Vec<RedundantImportSub>,
2706
2707    pub ident: Ident,
2708}
2709
2710#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for RedundantImportSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RedundantImportSub::ImportedHere(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label_imported_here);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    RedundantImportSub::DefinedHere(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label_defined_here);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    RedundantImportSub::ImportedPrelude(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label_imported_prelude);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    RedundantImportSub::DefinedPrelude(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_label_defined_prelude);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2711pub(crate) enum RedundantImportSub {
2712    #[label(lint_label_imported_here)]
2713    ImportedHere(#[primary_span] Span),
2714    #[label(lint_label_defined_here)]
2715    DefinedHere(#[primary_span] Span),
2716    #[label(lint_label_imported_prelude)]
2717    ImportedPrelude(#[primary_span] Span),
2718    #[label(lint_label_defined_prelude)]
2719    DefinedPrelude(#[primary_span] Span),
2720}
2721
2722#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            PatternsInFnsWithoutBody {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    PatternsInFnsWithoutBody::Foreign { sub: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_pattern_in_foreign);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                    PatternsInFnsWithoutBody::Bodiless { sub: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_pattern_in_bodiless);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2723pub(crate) enum PatternsInFnsWithoutBody {
2724    #[diag(lint_pattern_in_foreign)]
2725    Foreign {
2726        #[subdiagnostic]
2727        sub: PatternsInFnsWithoutBodySub,
2728    },
2729    #[diag(lint_pattern_in_bodiless)]
2730    Bodiless {
2731        #[subdiagnostic]
2732        sub: PatternsInFnsWithoutBodySub,
2733    },
2734}
2735
2736#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for PatternsInFnsWithoutBodySub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    PatternsInFnsWithoutBodySub {
                        span: __binding_0, ident: __binding_1 } => {
                        let __code_107 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("ident", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_remove_mut_from_pattern);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_107, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2737#[suggestion(lint_remove_mut_from_pattern, code = "{ident}", applicability = "machine-applicable")]
2738pub(crate) struct PatternsInFnsWithoutBodySub {
2739    #[primary_span]
2740    pub span: Span,
2741
2742    pub ident: Ident,
2743}
2744
2745#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for ReservedPrefix {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ReservedPrefix {
                        label: __binding_0,
                        suggestion: __binding_1,
                        prefix: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_reserved_prefix);
                        ;
                        let __code_108 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        diag.arg("prefix", __binding_2);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_108,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2746#[diag(lint_reserved_prefix)]
2747pub(crate) struct ReservedPrefix {
2748    #[label]
2749    pub label: Span,
2750    #[suggestion(code = " ", applicability = "machine-applicable")]
2751    pub suggestion: Span,
2752
2753    pub prefix: String,
2754}
2755
2756#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for RawPrefix {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RawPrefix { label: __binding_0, suggestion: __binding_1 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_raw_prefix);
                        ;
                        let __code_109 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_109,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2757#[diag(lint_raw_prefix)]
2758pub(crate) struct RawPrefix {
2759    #[label]
2760    pub label: Span,
2761    #[suggestion(code = " ", applicability = "machine-applicable")]
2762    pub suggestion: Span,
2763}
2764
2765#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            BreakWithLabelAndLoop {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    BreakWithLabelAndLoop { sub: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_break_with_label_and_loop);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2766#[diag(lint_break_with_label_and_loop)]
2767pub(crate) struct BreakWithLabelAndLoop {
2768    #[subdiagnostic]
2769    pub sub: BreakWithLabelAndLoopSub,
2770}
2771
2772#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BreakWithLabelAndLoopSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BreakWithLabelAndLoopSub {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_110 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_111 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_110));
                        suggestions.push((__binding_1, __code_111));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2773#[multipart_suggestion(lint_suggestion, applicability = "machine-applicable")]
2774pub(crate) struct BreakWithLabelAndLoopSub {
2775    #[suggestion_part(code = "(")]
2776    pub left: Span,
2777    #[suggestion_part(code = ")")]
2778    pub right: Span,
2779}
2780
2781#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DeprecatedWhereClauseLocation {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DeprecatedWhereClauseLocation { suggestion: __binding_0 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_deprecated_where_clause_location);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2782#[diag(lint_deprecated_where_clause_location)]
2783#[note]
2784pub(crate) struct DeprecatedWhereClauseLocation {
2785    #[subdiagnostic]
2786    pub suggestion: DeprecatedWhereClauseLocationSugg,
2787}
2788
2789#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for DeprecatedWhereClauseLocationSugg
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    DeprecatedWhereClauseLocationSugg::MoveToEnd {
                        left: __binding_0, right: __binding_1, sugg: __binding_2 }
                        => {
                        let mut suggestions = Vec::new();
                        let __code_112 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_113 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                });
                        suggestions.push((__binding_0, __code_112));
                        suggestions.push((__binding_1, __code_113));
                        diag.store_args();
                        diag.arg("sugg", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_move_to_end);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    DeprecatedWhereClauseLocationSugg::RemoveWhere {
                        span: __binding_0 } => {
                        let __code_114 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_remove_where);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_114, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2790pub(crate) enum DeprecatedWhereClauseLocationSugg {
2791    #[multipart_suggestion(lint_suggestion_move_to_end, applicability = "machine-applicable")]
2792    MoveToEnd {
2793        #[suggestion_part(code = "")]
2794        left: Span,
2795        #[suggestion_part(code = "{sugg}")]
2796        right: Span,
2797
2798        sugg: String,
2799    },
2800    #[suggestion(lint_suggestion_remove_where, code = "", applicability = "machine-applicable")]
2801    RemoveWhere {
2802        #[primary_span]
2803        span: Span,
2804    },
2805}
2806
2807#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            SingleUseLifetime {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    SingleUseLifetime {
                        param_span: __binding_0,
                        use_span: __binding_1,
                        suggestion: __binding_2,
                        ident: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_single_use_lifetime);
                        ;
                        diag.arg("ident", __binding_3);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::lint_label_param);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::lint_label_use);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2808#[diag(lint_single_use_lifetime)]
2809pub(crate) struct SingleUseLifetime {
2810    #[label(lint_label_param)]
2811    pub param_span: Span,
2812    #[label(lint_label_use)]
2813    pub use_span: Span,
2814    #[subdiagnostic]
2815    pub suggestion: Option<SingleUseLifetimeSugg>,
2816
2817    pub ident: Ident,
2818}
2819
2820#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for SingleUseLifetimeSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    SingleUseLifetimeSugg {
                        deletion_span: __binding_0,
                        use_span: __binding_1,
                        replace_lt: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_115 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_116 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                });
                        if let Some(__binding_0) = __binding_0 {
                            suggestions.push((__binding_0, __code_115));
                        }
                        suggestions.push((__binding_1, __code_116));
                        diag.store_args();
                        diag.arg("replace_lt", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2821#[multipart_suggestion(lint_suggestion, applicability = "machine-applicable")]
2822pub(crate) struct SingleUseLifetimeSugg {
2823    #[suggestion_part(code = "")]
2824    pub deletion_span: Option<Span>,
2825    #[suggestion_part(code = "{replace_lt}")]
2826    pub use_span: Span,
2827
2828    pub replace_lt: String,
2829}
2830
2831#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnusedLifetime {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedLifetime {
                        deletion_span: __binding_0, ident: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_lifetime);
                        ;
                        let __code_117 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.arg("ident", __binding_1);
                        if let Some(__binding_0) = __binding_0 {
                            diag.span_suggestions_with_style(__binding_0,
                                crate::fluent_generated::_subdiag::suggestion, __code_117,
                                rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowCode);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2832#[diag(lint_unused_lifetime)]
2833pub(crate) struct UnusedLifetime {
2834    #[suggestion(code = "", applicability = "machine-applicable")]
2835    pub deletion_span: Option<Span>,
2836
2837    pub ident: Ident,
2838}
2839
2840#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            NamedArgumentUsedPositionally {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    NamedArgumentUsedPositionally {
                        named_arg_sp: __binding_0,
                        position_label_sp: __binding_1,
                        suggestion: __binding_2,
                        name: __binding_3,
                        named_arg_name: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_named_argument_used_positionally);
                        ;
                        let __code_118 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_3))
                                            })].into_iter();
                        diag.arg("name", __binding_3);
                        diag.arg("named_arg_name", __binding_4);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::lint_label_named_arg);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_label(__binding_1,
                                crate::fluent_generated::lint_label_position_arg);
                        }
                        if let Some(__binding_2) = __binding_2 {
                            diag.span_suggestions_with_style(__binding_2,
                                crate::fluent_generated::_subdiag::suggestion, __code_118,
                                rustc_errors::Applicability::MaybeIncorrect,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2841#[diag(lint_named_argument_used_positionally)]
2842pub(crate) struct NamedArgumentUsedPositionally {
2843    #[label(lint_label_named_arg)]
2844    pub named_arg_sp: Span,
2845    #[label(lint_label_position_arg)]
2846    pub position_label_sp: Option<Span>,
2847    #[suggestion(style = "verbose", code = "{name}", applicability = "maybe-incorrect")]
2848    pub suggestion: Option<Span>,
2849
2850    pub name: String,
2851    pub named_arg_name: String,
2852}
2853
2854#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AmbiguousGlobReexports {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AmbiguousGlobReexports {
                        first_reexport: __binding_0,
                        duplicate_reexport: __binding_1,
                        name: __binding_2,
                        namespace: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_ambiguous_glob_reexport);
                        ;
                        diag.arg("name", __binding_2);
                        diag.arg("namespace", __binding_3);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::lint_label_first_reexport);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::lint_label_duplicate_reexport);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2855#[diag(lint_ambiguous_glob_reexport)]
2856pub(crate) struct AmbiguousGlobReexports {
2857    #[label(lint_label_first_reexport)]
2858    pub first_reexport: Span,
2859    #[label(lint_label_duplicate_reexport)]
2860    pub duplicate_reexport: Span,
2861
2862    pub name: String,
2863    pub namespace: String,
2864}
2865
2866#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            HiddenGlobReexports {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    HiddenGlobReexports {
                        glob_reexport: __binding_0,
                        private_item: __binding_1,
                        name: __binding_2,
                        namespace: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_hidden_glob_reexport);
                        ;
                        diag.arg("name", __binding_2);
                        diag.arg("namespace", __binding_3);
                        diag.span_note(__binding_0,
                            crate::fluent_generated::lint_note_glob_reexport);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::lint_note_private_item);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2867#[diag(lint_hidden_glob_reexport)]
2868pub(crate) struct HiddenGlobReexports {
2869    #[note(lint_note_glob_reexport)]
2870    pub glob_reexport: Span,
2871    #[note(lint_note_private_item)]
2872    pub private_item: Span,
2873
2874    pub name: String,
2875    pub namespace: String,
2876}
2877
2878#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnusedQualifications {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedQualifications { removal_span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_unnecessary_qualification);
                        ;
                        let __code_119 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_119,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2879#[diag(lint_unnecessary_qualification)]
2880pub(crate) struct UnusedQualifications {
2881    #[suggestion(style = "verbose", code = "", applicability = "machine-applicable")]
2882    pub removal_span: Span,
2883}
2884
2885#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AssociatedConstElidedLifetime {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AssociatedConstElidedLifetime {
                        span: __binding_0,
                        code: __binding_1,
                        elided: __binding_2,
                        lifetimes_in_scope: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_associated_const_elided_lifetime);
                        ;
                        let __code_120 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.arg("code", __binding_1);
                        diag.arg("elided", __binding_2);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_120,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.span_note(__binding_3,
                            crate::fluent_generated::_subdiag::note);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2886#[diag(lint_associated_const_elided_lifetime)]
2887pub(crate) struct AssociatedConstElidedLifetime {
2888    #[suggestion(style = "verbose", code = "{code}", applicability = "machine-applicable")]
2889    pub span: Span,
2890
2891    pub code: &'static str,
2892    pub elided: bool,
2893    #[note]
2894    pub lifetimes_in_scope: MultiSpan,
2895}
2896
2897#[derive(const _: () =
    {
        impl<'__a, 'a> rustc_errors::LintDiagnostic<'__a, ()> for
            RefOfMutStatic<'a> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    RefOfMutStatic {
                        span: __binding_0,
                        sugg: __binding_1,
                        shared_label: __binding_2,
                        shared_note: __binding_3,
                        mut_note: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_static_mut_refs_lint);
                        ;
                        diag.arg("shared_label", __binding_2);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        if __binding_3 {
                            diag.note(crate::fluent_generated::lint_shared_note);
                        }
                        if __binding_4 {
                            diag.note(crate::fluent_generated::lint_mut_note);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2898#[diag(lint_static_mut_refs_lint)]
2899pub(crate) struct RefOfMutStatic<'a> {
2900    #[label]
2901    pub span: Span,
2902    #[subdiagnostic]
2903    pub sugg: Option<MutRefSugg>,
2904    pub shared_label: &'a str,
2905    #[note(lint_shared_note)]
2906    pub shared_note: bool,
2907    #[note(lint_mut_note)]
2908    pub mut_note: bool,
2909}
2910
2911#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MutRefSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MutRefSugg::Shared { span: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_121 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("&raw const "))
                                });
                        suggestions.push((__binding_0, __code_121));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    MutRefSugg::Mut { span: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_122 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("&raw mut "))
                                });
                        suggestions.push((__binding_0, __code_122));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion_mut);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2912pub(crate) enum MutRefSugg {
2913    #[multipart_suggestion(lint_suggestion, style = "verbose", applicability = "maybe-incorrect")]
2914    Shared {
2915        #[suggestion_part(code = "&raw const ")]
2916        span: Span,
2917    },
2918    #[multipart_suggestion(
2919        lint_suggestion_mut,
2920        style = "verbose",
2921        applicability = "maybe-incorrect"
2922    )]
2923    Mut {
2924        #[suggestion_part(code = "&raw mut ")]
2925        span: Span,
2926    },
2927}
2928
2929#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnqualifiedLocalImportsDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnqualifiedLocalImportsDiag {} => {
                        diag.primary_message(crate::fluent_generated::lint_unqualified_local_imports);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2930#[diag(lint_unqualified_local_imports)]
2931pub(crate) struct UnqualifiedLocalImportsDiag {}
2932
2933#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for ReservedString {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ReservedString { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_reserved_string);
                        ;
                        let __code_123 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_123,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2934#[diag(lint_reserved_string)]
2935pub(crate) struct ReservedString {
2936    #[suggestion(code = " ", applicability = "machine-applicable")]
2937    pub suggestion: Span,
2938}
2939
2940#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            ReservedMultihash {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    ReservedMultihash { suggestion: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_reserved_multihash);
                        ;
                        let __code_124 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_124,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2941#[diag(lint_reserved_multihash)]
2942pub(crate) struct ReservedMultihash {
2943    #[suggestion(code = " ", applicability = "machine-applicable")]
2944    pub suggestion: Span,
2945}
2946
2947#[derive(const _: () =
    {
        impl<'__a, 'tcx> rustc_errors::LintDiagnostic<'__a, ()> for
            FunctionCastsAsIntegerDiag<'tcx> {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    FunctionCastsAsIntegerDiag { sugg: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_function_casts_as_integer);
                        ;
                        diag.subdiagnostic(__binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
2948#[diag(lint_function_casts_as_integer)]
2949pub(crate) struct FunctionCastsAsIntegerDiag<'tcx> {
2950    #[subdiagnostic]
2951    pub(crate) sugg: FunctionCastsAsIntegerSugg<'tcx>,
2952}
2953
2954#[derive(const _: () =
    {
        impl<'tcx> rustc_errors::Subdiagnostic for
            FunctionCastsAsIntegerSugg<'tcx> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FunctionCastsAsIntegerSugg {
                        suggestion: __binding_0, cast_to_ty: __binding_1 } => {
                        let __code_125 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" as *const ()"))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("cast_to_ty", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_cast_as_fn);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_125, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2955#[suggestion(
2956    lint_cast_as_fn,
2957    code = " as *const ()",
2958    applicability = "machine-applicable",
2959    style = "verbose"
2960)]
2961pub(crate) struct FunctionCastsAsIntegerSugg<'tcx> {
2962    #[primary_span]
2963    pub suggestion: Span,
2964    pub cast_to_ty: Ty<'tcx>,
2965}
2966
2967#[derive(#[automatically_derived]
impl ::core::fmt::Debug for MismatchedLifetimeSyntaxes {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::debug_struct_field3_finish(f,
            "MismatchedLifetimeSyntaxes", "inputs", &self.inputs, "outputs",
            &self.outputs, "suggestions", &&self.suggestions)
    }
}Debug)]
2968pub(crate) struct MismatchedLifetimeSyntaxes {
2969    pub inputs: LifetimeSyntaxCategories<Vec<Span>>,
2970    pub outputs: LifetimeSyntaxCategories<Vec<Span>>,
2971
2972    pub suggestions: Vec<MismatchedLifetimeSyntaxesSuggestion>,
2973}
2974
2975impl<'a, G: EmissionGuarantee> LintDiagnostic<'a, G> for MismatchedLifetimeSyntaxes {
2976    fn decorate_lint<'b>(self, diag: &'b mut Diag<'a, G>) {
2977        let counts = self.inputs.len() + self.outputs.len();
2978        let message = match counts {
2979            LifetimeSyntaxCategories { hidden: 0, elided: 0, named: 0 } => {
2980                {
    ::core::panicking::panic_fmt(format_args!("No lifetime mismatch detected"));
}panic!("No lifetime mismatch detected")
2981            }
2982
2983            LifetimeSyntaxCategories { hidden: _, elided: _, named: 0 } => {
2984                fluent::lint_mismatched_lifetime_syntaxes_hiding_while_elided
2985            }
2986
2987            LifetimeSyntaxCategories { hidden: _, elided: 0, named: _ } => {
2988                fluent::lint_mismatched_lifetime_syntaxes_hiding_while_named
2989            }
2990
2991            LifetimeSyntaxCategories { hidden: 0, elided: _, named: _ } => {
2992                fluent::lint_mismatched_lifetime_syntaxes_eliding_while_named
2993            }
2994
2995            LifetimeSyntaxCategories { hidden: _, elided: _, named: _ } => {
2996                fluent::lint_mismatched_lifetime_syntaxes_hiding_and_eliding_while_named
2997            }
2998        };
2999        diag.primary_message(message);
3000
3001        for s in self.inputs.hidden {
3002            diag.span_label(s, fluent::lint_mismatched_lifetime_syntaxes_input_hidden);
3003        }
3004        for s in self.inputs.elided {
3005            diag.span_label(s, fluent::lint_mismatched_lifetime_syntaxes_input_elided);
3006        }
3007        for s in self.inputs.named {
3008            diag.span_label(s, fluent::lint_mismatched_lifetime_syntaxes_input_named);
3009        }
3010
3011        for s in self.outputs.hidden {
3012            diag.span_label(s, fluent::lint_mismatched_lifetime_syntaxes_output_hidden);
3013        }
3014        for s in self.outputs.elided {
3015            diag.span_label(s, fluent::lint_mismatched_lifetime_syntaxes_output_elided);
3016        }
3017        for s in self.outputs.named {
3018            diag.span_label(s, fluent::lint_mismatched_lifetime_syntaxes_output_named);
3019        }
3020
3021        diag.help(fluent::lint_mismatched_lifetime_syntaxes_help);
3022
3023        let mut suggestions = self.suggestions.into_iter();
3024        if let Some(s) = suggestions.next() {
3025            diag.subdiagnostic(s);
3026
3027            for mut s in suggestions {
3028                s.make_optional_alternative();
3029                diag.subdiagnostic(s);
3030            }
3031        }
3032    }
3033}
3034
3035#[derive(#[automatically_derived]
impl ::core::fmt::Debug for MismatchedLifetimeSyntaxesSuggestion {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        match self {
            MismatchedLifetimeSyntaxesSuggestion::Implicit {
                suggestions: __self_0, optional_alternative: __self_1 } =>
                ::core::fmt::Formatter::debug_struct_field2_finish(f,
                    "Implicit", "suggestions", __self_0, "optional_alternative",
                    &__self_1),
            MismatchedLifetimeSyntaxesSuggestion::Mixed {
                implicit_suggestions: __self_0,
                explicit_anonymous_suggestions: __self_1,
                optional_alternative: __self_2 } =>
                ::core::fmt::Formatter::debug_struct_field3_finish(f, "Mixed",
                    "implicit_suggestions", __self_0,
                    "explicit_anonymous_suggestions", __self_1,
                    "optional_alternative", &__self_2),
            MismatchedLifetimeSyntaxesSuggestion::Explicit {
                lifetime_name: __self_0,
                suggestions: __self_1,
                optional_alternative: __self_2 } =>
                ::core::fmt::Formatter::debug_struct_field3_finish(f,
                    "Explicit", "lifetime_name", __self_0, "suggestions",
                    __self_1, "optional_alternative", &__self_2),
        }
    }
}Debug)]
3036pub(crate) enum MismatchedLifetimeSyntaxesSuggestion {
3037    Implicit {
3038        suggestions: Vec<Span>,
3039        optional_alternative: bool,
3040    },
3041
3042    Mixed {
3043        implicit_suggestions: Vec<Span>,
3044        explicit_anonymous_suggestions: Vec<(Span, String)>,
3045        optional_alternative: bool,
3046    },
3047
3048    Explicit {
3049        lifetime_name: String,
3050        suggestions: Vec<(Span, String)>,
3051        optional_alternative: bool,
3052    },
3053}
3054
3055impl MismatchedLifetimeSyntaxesSuggestion {
3056    fn make_optional_alternative(&mut self) {
3057        use MismatchedLifetimeSyntaxesSuggestion::*;
3058
3059        let optional_alternative = match self {
3060            Implicit { optional_alternative, .. }
3061            | Mixed { optional_alternative, .. }
3062            | Explicit { optional_alternative, .. } => optional_alternative,
3063        };
3064
3065        *optional_alternative = true;
3066    }
3067}
3068
3069impl Subdiagnostic for MismatchedLifetimeSyntaxesSuggestion {
3070    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
3071        use MismatchedLifetimeSyntaxesSuggestion::*;
3072
3073        let style = |optional_alternative| {
3074            if optional_alternative {
3075                SuggestionStyle::CompletelyHidden
3076            } else {
3077                SuggestionStyle::ShowAlways
3078            }
3079        };
3080
3081        let applicability = |optional_alternative| {
3082            // `cargo fix` can't handle more than one fix for the same issue,
3083            // so hide alternative suggestions from it by marking them as maybe-incorrect
3084            if optional_alternative {
3085                Applicability::MaybeIncorrect
3086            } else {
3087                Applicability::MachineApplicable
3088            }
3089        };
3090
3091        match self {
3092            Implicit { suggestions, optional_alternative } => {
3093                let suggestions = suggestions.into_iter().map(|s| (s, String::new())).collect();
3094                diag.multipart_suggestion_with_style(
3095                    fluent::lint_mismatched_lifetime_syntaxes_suggestion_implicit,
3096                    suggestions,
3097                    applicability(optional_alternative),
3098                    style(optional_alternative),
3099                );
3100            }
3101
3102            Mixed {
3103                implicit_suggestions,
3104                explicit_anonymous_suggestions,
3105                optional_alternative,
3106            } => {
3107                let message = if implicit_suggestions.is_empty() {
3108                    fluent::lint_mismatched_lifetime_syntaxes_suggestion_mixed_only_paths
3109                } else {
3110                    fluent::lint_mismatched_lifetime_syntaxes_suggestion_mixed
3111                };
3112
3113                let implicit_suggestions =
3114                    implicit_suggestions.into_iter().map(|s| (s, String::new()));
3115
3116                let suggestions =
3117                    implicit_suggestions.chain(explicit_anonymous_suggestions).collect();
3118
3119                diag.multipart_suggestion_with_style(
3120                    message,
3121                    suggestions,
3122                    applicability(optional_alternative),
3123                    style(optional_alternative),
3124                );
3125            }
3126
3127            Explicit { lifetime_name, suggestions, optional_alternative } => {
3128                diag.arg("lifetime_name", lifetime_name);
3129                let msg = diag.eagerly_translate(
3130                    fluent::lint_mismatched_lifetime_syntaxes_suggestion_explicit,
3131                );
3132                diag.remove_arg("lifetime_name");
3133                diag.multipart_suggestion_with_style(
3134                    msg,
3135                    suggestions,
3136                    applicability(optional_alternative),
3137                    style(optional_alternative),
3138                );
3139            }
3140        }
3141    }
3142}
3143
3144#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            EmptyAttributeList {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    EmptyAttributeList {
                        attr_span: __binding_0,
                        attr_path: __binding_1,
                        valid_without_list: __binding_2 } => {
                        diag.primary_message(crate::fluent_generated::lint_empty_attribute);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        let __code_126 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.arg("attr_path", __binding_1);
                        diag.arg("valid_without_list", __binding_2);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_126,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3145#[diag(lint_empty_attribute)]
3146#[note]
3147pub(crate) struct EmptyAttributeList {
3148    #[suggestion(code = "", applicability = "machine-applicable")]
3149    pub attr_span: Span,
3150    pub attr_path: String,
3151    pub valid_without_list: bool,
3152}
3153
3154#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            InvalidTargetLint {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidTargetLint {
                        name: __binding_0,
                        target: __binding_1,
                        applied: __binding_2,
                        only: __binding_3,
                        attr_span: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_target);
                        diag.warn(crate::fluent_generated::_subdiag::warn);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        let __code_127 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.arg("name", __binding_0);
                        diag.arg("target", __binding_1);
                        diag.arg("applied", __binding_2);
                        diag.arg("only", __binding_3);
                        diag.span_suggestions_with_style(__binding_4,
                            crate::fluent_generated::_subdiag::suggestion, __code_127,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3155#[diag(lint_invalid_target)]
3156#[warning]
3157#[help]
3158pub(crate) struct InvalidTargetLint {
3159    pub name: String,
3160    pub target: &'static str,
3161    pub applied: DiagArgValue,
3162    pub only: &'static str,
3163    #[suggestion(code = "", applicability = "machine-applicable", style = "tool-only")]
3164    pub attr_span: Span,
3165}
3166
3167#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for InvalidAttrStyle
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    InvalidAttrStyle {
                        name: __binding_0,
                        is_used_as_inner: __binding_1,
                        target_span: __binding_2,
                        target: __binding_3 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_style);
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("is_used_as_inner", __binding_1);
                        diag.arg("target", __binding_3);
                        if let Some(__binding_2) = __binding_2 {
                            diag.span_note(__binding_2,
                                crate::fluent_generated::_subdiag::note);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3168#[diag(lint_invalid_style)]
3169pub(crate) struct InvalidAttrStyle {
3170    pub name: String,
3171    pub is_used_as_inner: bool,
3172    #[note]
3173    pub target_span: Option<Span>,
3174    pub target: &'static str,
3175}
3176
3177#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnusedDuplicate
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedDuplicate {
                        this: __binding_0, other: __binding_1, warning: __binding_2
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_duplicate);
                        ;
                        let __code_128 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_128,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        if __binding_2 {
                            diag.warn(crate::fluent_generated::_subdiag::warn);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3178#[diag(lint_unused_duplicate)]
3179pub(crate) struct UnusedDuplicate {
3180    #[suggestion(code = "", applicability = "machine-applicable")]
3181    pub this: Span,
3182    #[note]
3183    pub other: Span,
3184    #[warning]
3185    pub warning: bool,
3186}
3187
3188#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnsafeAttrOutsideUnsafeLint {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnsafeAttrOutsideUnsafeLint {
                        span: __binding_0, suggestion: __binding_1 } => {
                        diag.primary_message(crate::fluent_generated::lint_unsafe_attr_outside_unsafe);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3189#[diag(lint_unsafe_attr_outside_unsafe)]
3190pub(crate) struct UnsafeAttrOutsideUnsafeLint {
3191    #[label]
3192    pub span: Span,
3193    #[subdiagnostic]
3194    pub suggestion: Option<UnsafeAttrOutsideUnsafeSuggestion>,
3195}
3196
3197#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnsafeAttrOutsideUnsafeSuggestion
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnsafeAttrOutsideUnsafeSuggestion {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_129 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("unsafe("))
                                });
                        let __code_130 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_129));
                        suggestions.push((__binding_1, __code_130));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_unsafe_attr_outside_unsafe_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3198#[multipart_suggestion(
3199    lint_unsafe_attr_outside_unsafe_suggestion,
3200    applicability = "machine-applicable"
3201)]
3202pub(crate) struct UnsafeAttrOutsideUnsafeSuggestion {
3203    #[suggestion_part(code = "unsafe(")]
3204    pub left: Span,
3205    #[suggestion_part(code = ")")]
3206    pub right: Span,
3207}
3208
3209#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for UnusedVisibility
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnusedVisibility { span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_unused_visibilities);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        let __code_131 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_131,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3210#[diag(lint_unused_visibilities)]
3211#[note]
3212pub(crate) struct UnusedVisibility {
3213    #[suggestion(style = "short", code = "", applicability = "machine-applicable")]
3214    pub span: Span,
3215}
3216
3217#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocAliasDuplicated {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocAliasDuplicated { first_defn: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_doc_alias_duplicated);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3218#[diag(lint_doc_alias_duplicated)]
3219pub(crate) struct DocAliasDuplicated {
3220    #[label]
3221    pub first_defn: Span,
3222}
3223
3224#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocAutoCfgExpectsHideOrShow {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocAutoCfgExpectsHideOrShow => {
                        diag.primary_message(crate::fluent_generated::lint_doc_auto_cfg_expects_hide_or_show);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3225#[diag(lint_doc_auto_cfg_expects_hide_or_show)]
3226pub(crate) struct DocAutoCfgExpectsHideOrShow;
3227
3228#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocAutoCfgHideShowUnexpectedItem {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocAutoCfgHideShowUnexpectedItem { attr_name: __binding_0 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_doc_auto_cfg_hide_show_unexpected_item);
                        ;
                        diag.arg("attr_name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3229#[diag(lint_doc_auto_cfg_hide_show_unexpected_item)]
3230pub(crate) struct DocAutoCfgHideShowUnexpectedItem {
3231    pub attr_name: Symbol,
3232}
3233
3234#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocAutoCfgHideShowExpectsList {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocAutoCfgHideShowExpectsList { attr_name: __binding_0 } =>
                        {
                        diag.primary_message(crate::fluent_generated::lint_doc_auto_cfg_hide_show_expects_list);
                        ;
                        diag.arg("attr_name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3235#[diag(lint_doc_auto_cfg_hide_show_expects_list)]
3236pub(crate) struct DocAutoCfgHideShowExpectsList {
3237    pub attr_name: Symbol,
3238}
3239
3240#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for DocInvalid {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocInvalid => {
                        diag.primary_message(crate::fluent_generated::lint_doc_invalid);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3241#[diag(lint_doc_invalid)]
3242pub(crate) struct DocInvalid;
3243
3244#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocUnknownInclude {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocUnknownInclude {
                        inner: __binding_0, value: __binding_1, sugg: __binding_2 }
                        => {
                        diag.primary_message(crate::fluent_generated::lint_doc_unknown_include);
                        ;
                        let __code_132 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#{0}[doc = include_str!(\"{1}\")]",
                                                        __binding_0, __binding_1))
                                            })].into_iter();
                        diag.arg("inner", __binding_0);
                        diag.arg("value", __binding_1);
                        diag.span_suggestions_with_style(__binding_2.0,
                            crate::fluent_generated::_subdiag::suggestion, __code_132,
                            __binding_2.1, rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3245#[diag(lint_doc_unknown_include)]
3246pub(crate) struct DocUnknownInclude {
3247    pub inner: &'static str,
3248    pub value: Symbol,
3249    #[suggestion(code = "#{inner}[doc = include_str!(\"{value}\")]")]
3250    pub sugg: (Span, Applicability),
3251}
3252
3253#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocUnknownSpotlight {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocUnknownSpotlight { sugg_span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_doc_unknown_spotlight);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        diag.note(crate::fluent_generated::lint_no_op_note);
                        ;
                        let __code_133 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("notable_trait"))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_133,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3254#[diag(lint_doc_unknown_spotlight)]
3255#[note]
3256#[note(lint_no_op_note)]
3257pub(crate) struct DocUnknownSpotlight {
3258    #[suggestion(style = "short", applicability = "machine-applicable", code = "notable_trait")]
3259    pub sugg_span: Span,
3260}
3261
3262#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for DocUnknownPasses
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocUnknownPasses { name: __binding_0, note_span: __binding_1
                        } => {
                        diag.primary_message(crate::fluent_generated::lint_doc_unknown_passes);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        diag.note(crate::fluent_generated::lint_no_op_note);
                        ;
                        diag.arg("name", __binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3263#[diag(lint_doc_unknown_passes)]
3264#[note]
3265#[note(lint_no_op_note)]
3266pub(crate) struct DocUnknownPasses {
3267    pub name: Symbol,
3268    #[label]
3269    pub note_span: Span,
3270}
3271
3272#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocUnknownPlugins {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocUnknownPlugins { label_span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_doc_unknown_plugins);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        diag.note(crate::fluent_generated::lint_no_op_note);
                        ;
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3273#[diag(lint_doc_unknown_plugins)]
3274#[note]
3275#[note(lint_no_op_note)]
3276pub(crate) struct DocUnknownPlugins {
3277    #[label]
3278    pub label_span: Span,
3279}
3280
3281#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for DocUnknownAny {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocUnknownAny { name: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_doc_unknown_any);
                        ;
                        diag.arg("name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3282#[diag(lint_doc_unknown_any)]
3283pub(crate) struct DocUnknownAny {
3284    pub name: Symbol,
3285}
3286
3287#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DocAutoCfgWrongLiteral {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocAutoCfgWrongLiteral => {
                        diag.primary_message(crate::fluent_generated::lint_doc_auto_cfg_wrong_literal);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3288#[diag(lint_doc_auto_cfg_wrong_literal)]
3289pub(crate) struct DocAutoCfgWrongLiteral;
3290
3291#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for DocTestTakesList
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocTestTakesList => {
                        diag.primary_message(crate::fluent_generated::lint_doc_test_takes_list);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3292#[diag(lint_doc_test_takes_list)]
3293pub(crate) struct DocTestTakesList;
3294
3295#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for DocTestUnknown {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocTestUnknown { name: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_doc_test_unknown);
                        ;
                        diag.arg("name", __binding_0);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3296#[diag(lint_doc_test_unknown)]
3297pub(crate) struct DocTestUnknown {
3298    pub name: Symbol,
3299}
3300
3301#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for DocTestLiteral {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DocTestLiteral => {
                        diag.primary_message(crate::fluent_generated::lint_doc_test_literal);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3302#[diag(lint_doc_test_literal)]
3303pub(crate) struct DocTestLiteral;
3304
3305#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            AttrCrateLevelOnly {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AttrCrateLevelOnly => {
                        diag.primary_message(crate::fluent_generated::lint_attr_crate_level);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3306#[diag(lint_attr_crate_level)]
3307#[note]
3308pub(crate) struct AttrCrateLevelOnly;
3309
3310#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DoNotRecommendDoesNotExpectArgs {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DoNotRecommendDoesNotExpectArgs => {
                        diag.primary_message(crate::fluent_generated::lint_incorrect_do_not_recommend_args);
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3311#[diag(lint_incorrect_do_not_recommend_args)]
3312pub(crate) struct DoNotRecommendDoesNotExpectArgs;
3313
3314#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnknownCrateTypes {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnknownCrateTypes { sugg: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::lint_invalid_crate_type_value);
                        ;
                        if let Some(__binding_0) = __binding_0 {
                            diag.subdiagnostic(__binding_0);
                        }
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3315#[diag(lint_invalid_crate_type_value)]
3316pub(crate) struct UnknownCrateTypes {
3317    #[subdiagnostic]
3318    pub sugg: Option<UnknownCrateTypesSuggestion>,
3319}
3320
3321#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnknownCrateTypesSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnknownCrateTypesSuggestion {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_134 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\"{0}\"", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::lint_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_134, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3322#[suggestion(lint_suggestion, code = r#""{snippet}""#, applicability = "maybe-incorrect")]
3323pub(crate) struct UnknownCrateTypesSuggestion {
3324    #[primary_span]
3325    pub span: Span,
3326    pub snippet: Symbol,
3327}