Skip to main content

rustc_builtin_macros/
errors.rs

1use rustc_errors::codes::*;
2use rustc_errors::{
3    Diag, DiagCtxtHandle, Diagnostic, EmissionGuarantee, Level, MultiSpan, SingleLabelManySpans,
4    Subdiagnostic, inline_fluent,
5};
6use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic};
7use rustc_span::{Ident, Span, Symbol};
8
9#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for AvoidIntelSyntax
            {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AvoidIntelSyntax => {
                        diag.primary_message(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("avoid using `.intel_syntax`, Intel syntax is the default")));
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
10#[diag("avoid using `.intel_syntax`, Intel syntax is the default")]
11pub(crate) struct AvoidIntelSyntax;
12
13#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for AvoidAttSyntax {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    AvoidAttSyntax => {
                        diag.primary_message(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("avoid using `.att_syntax`, prefer using `options(att_syntax)` instead")));
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
14#[diag("avoid using `.att_syntax`, prefer using `options(att_syntax)` instead")]
15pub(crate) struct AvoidAttSyntax;
16
17#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            IncompleteInclude {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    IncompleteInclude => {
                        diag.primary_message(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("include macro expected single expression in source")));
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
18#[diag("include macro expected single expression in source")]
19pub(crate) struct IncompleteInclude;
20
21#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            UnnameableTestItems {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    UnnameableTestItems => {
                        diag.primary_message(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot test inner items")));
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
22#[diag("cannot test inner items")]
23pub(crate) struct UnnameableTestItems;
24
25#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            DuplicateMacroAttribute {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    DuplicateMacroAttribute => {
                        diag.primary_message(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("duplicated attribute")));
                        ;
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
26#[diag("duplicated attribute")]
27pub(crate) struct DuplicateMacroAttribute;
28
29#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            RequiresCfgPattern where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    RequiresCfgPattern { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("macro requires a cfg-pattern as an argument")));
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cfg-pattern required")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
30#[diag("macro requires a cfg-pattern as an argument")]
31pub(crate) struct RequiresCfgPattern {
32    #[primary_span]
33    #[label("cfg-pattern required")]
34    pub(crate) span: Span,
35}
36
37#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for OneCfgPattern
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    OneCfgPattern { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected 1 cfg-pattern")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
38#[diag("expected 1 cfg-pattern")]
39pub(crate) struct OneCfgPattern {
40    #[primary_span]
41    pub(crate) span: Span,
42}
43
44#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AllocErrorMustBeFn where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AllocErrorMustBeFn { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("alloc_error_handler must be a function")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
45#[diag("alloc_error_handler must be a function")]
46pub(crate) struct AllocErrorMustBeFn {
47    #[primary_span]
48    pub(crate) span: Span,
49}
50
51#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AssertRequiresBoolean where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AssertRequiresBoolean { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("macro requires a boolean expression as an argument")));
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("boolean expression required")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
52#[diag("macro requires a boolean expression as an argument")]
53pub(crate) struct AssertRequiresBoolean {
54    #[primary_span]
55    #[label("boolean expression required")]
56    pub(crate) span: Span,
57}
58
59#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AssertRequiresExpression where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AssertRequiresExpression {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("macro requires an expression as an argument")));
                        let __code_0 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try removing semicolon")),
                            __code_0, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
60#[diag("macro requires an expression as an argument")]
61pub(crate) struct AssertRequiresExpression {
62    #[primary_span]
63    pub(crate) span: Span,
64    #[suggestion("try removing semicolon", code = "", applicability = "maybe-incorrect")]
65    pub(crate) token: Span,
66}
67
68#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AssertMissingComma where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AssertMissingComma { span: __binding_0, comma: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unexpected string literal")));
                        let __code_1 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(", "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try adding a comma")),
                            __code_1, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
69#[diag("unexpected string literal")]
70pub(crate) struct AssertMissingComma {
71    #[primary_span]
72    pub(crate) span: Span,
73    #[suggestion(
74        "try adding a comma",
75        code = ", ",
76        applicability = "maybe-incorrect",
77        style = "short"
78    )]
79    pub(crate) comma: Span,
80}
81
82#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CfgAccessibleInvalid where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    CfgAccessibleInvalid::UnspecifiedPath(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`cfg_accessible` path is not specified")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    CfgAccessibleInvalid::MultiplePaths(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("multiple `cfg_accessible` paths are specified")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    CfgAccessibleInvalid::LiteralPath(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`cfg_accessible` path cannot be a literal")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    CfgAccessibleInvalid::HasArguments(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`cfg_accessible` path cannot accept arguments")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
83pub(crate) enum CfgAccessibleInvalid {
84    #[diag("`cfg_accessible` path is not specified")]
85    UnspecifiedPath(#[primary_span] Span),
86    #[diag("multiple `cfg_accessible` paths are specified")]
87    MultiplePaths(#[primary_span] Span),
88    #[diag("`cfg_accessible` path cannot be a literal")]
89    LiteralPath(#[primary_span] Span),
90    #[diag("`cfg_accessible` path cannot accept arguments")]
91    HasArguments(#[primary_span] Span),
92}
93
94#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CfgAccessibleIndeterminate where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    CfgAccessibleIndeterminate { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot determine whether the path is accessible or not")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
95#[diag("cannot determine whether the path is accessible or not")]
96pub(crate) struct CfgAccessibleIndeterminate {
97    #[primary_span]
98    pub(crate) span: Span,
99}
100
101#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConcatMissingLiteral where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatMissingLiteral { spans: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected a literal")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only literals (like `\"foo\"`, `-42` and `3.14`) can be passed to `concat!()`")));
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
102#[diag("expected a literal")]
103#[note("only literals (like `\"foo\"`, `-42` and `3.14`) can be passed to `concat!()`")]
104pub(crate) struct ConcatMissingLiteral {
105    #[primary_span]
106    pub(crate) spans: Vec<Span>,
107}
108
109#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ConcatBytestr
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytestr { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot concatenate a byte string literal")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
110#[diag("cannot concatenate a byte string literal")]
111pub(crate) struct ConcatBytestr {
112    #[primary_span]
113    pub(crate) span: Span,
114}
115
116#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ConcatCStrLit
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatCStrLit { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot concatenate a C string literal")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
117#[diag("cannot concatenate a C string literal")]
118pub(crate) struct ConcatCStrLit {
119    #[primary_span]
120    pub(crate) span: Span,
121}
122
123#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExportMacroRules where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ExportMacroRules { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot export macro_rules! macros from a `proc-macro` crate type currently")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
124#[diag("cannot export macro_rules! macros from a `proc-macro` crate type currently")]
125pub(crate) struct ExportMacroRules {
126    #[primary_span]
127    pub(crate) span: Span,
128}
129
130#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ProcMacro
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ProcMacro { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`proc-macro` crate types currently cannot export any items other than functions tagged with `#[proc_macro]`, `#[proc_macro_derive]`, or `#[proc_macro_attribute]`")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
131#[diag(
132    "`proc-macro` crate types currently cannot export any items other than functions tagged with `#[proc_macro]`, `#[proc_macro_derive]`, or `#[proc_macro_attribute]`"
133)]
134pub(crate) struct ProcMacro {
135    #[primary_span]
136    pub(crate) span: Span,
137}
138
139#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for TraceMacros
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    TraceMacros { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("trace_macros! accepts only `true` or `false`")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
140#[diag("trace_macros! accepts only `true` or `false`")]
141pub(crate) struct TraceMacros {
142    #[primary_span]
143    pub(crate) span: Span,
144}
145
146#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for BenchSig where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    BenchSig { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("functions used as benches must have signature `fn(&mut Bencher) -> impl Termination`")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
147#[diag("functions used as benches must have signature `fn(&mut Bencher) -> impl Termination`")]
148pub(crate) struct BenchSig {
149    #[primary_span]
150    pub(crate) span: Span,
151}
152
153#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AllocMustStatics where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AllocMustStatics { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("allocators must be statics")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
154#[diag("allocators must be statics")]
155pub(crate) struct AllocMustStatics {
156    #[primary_span]
157    pub(crate) span: Span,
158}
159
160pub(crate) use autodiff::*;
161
162mod autodiff {
163    use super::*;
164    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffMissingConfig where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffMissingConfig { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("autodiff requires at least a name and mode")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
165    #[diag("autodiff requires at least a name and mode")]
166    pub(crate) struct AutoDiffMissingConfig {
167        #[primary_span]
168        pub(crate) span: Span,
169    }
170    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffUnknownActivity where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffUnknownActivity {
                        span: __binding_0, act: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("did not recognize Activity: `{$act}`")));
                        ;
                        diag.arg("act", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
171    #[diag("did not recognize Activity: `{$act}`")]
172    pub(crate) struct AutoDiffUnknownActivity {
173        #[primary_span]
174        pub(crate) span: Span,
175        pub(crate) act: String,
176    }
177    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffInvalidTypeForActivity where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffInvalidTypeForActivity {
                        span: __binding_0, act: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$act} can not be used for this type")));
                        ;
                        diag.arg("act", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
178    #[diag("{$act} can not be used for this type")]
179    pub(crate) struct AutoDiffInvalidTypeForActivity {
180        #[primary_span]
181        pub(crate) span: Span,
182        pub(crate) act: String,
183    }
184    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffInvalidNumberActivities where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffInvalidNumberActivities {
                        span: __binding_0, expected: __binding_1, found: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected {$expected} activities, but found {$found}")));
                        ;
                        diag.arg("expected", __binding_1);
                        diag.arg("found", __binding_2);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
185    #[diag("expected {$expected} activities, but found {$found}")]
186    pub(crate) struct AutoDiffInvalidNumberActivities {
187        #[primary_span]
188        pub(crate) span: Span,
189        pub(crate) expected: usize,
190        pub(crate) found: usize,
191    }
192    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffInvalidApplicationModeAct where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffInvalidApplicationModeAct {
                        span: __binding_0, mode: __binding_1, act: __binding_2 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$act} can not be used in {$mode} Mode")));
                        ;
                        diag.arg("mode", __binding_1);
                        diag.arg("act", __binding_2);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
193    #[diag("{$act} can not be used in {$mode} Mode")]
194    pub(crate) struct AutoDiffInvalidApplicationModeAct {
195        #[primary_span]
196        pub(crate) span: Span,
197        pub(crate) mode: String,
198        pub(crate) act: String,
199    }
200
201    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffInvalidRetAct where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffInvalidRetAct {
                        span: __binding_0, mode: __binding_1, act: __binding_2 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid return activity {$act} in {$mode} Mode")));
                        ;
                        diag.arg("mode", __binding_1);
                        diag.arg("act", __binding_2);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
202    #[diag("invalid return activity {$act} in {$mode} Mode")]
203    pub(crate) struct AutoDiffInvalidRetAct {
204        #[primary_span]
205        pub(crate) span: Span,
206        pub(crate) mode: String,
207        pub(crate) act: String,
208    }
209
210    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffInvalidWidth where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffInvalidWidth { span: __binding_0, width: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("autodiff width must fit u32, but is {$width}")));
                        ;
                        diag.arg("width", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
211    #[diag("autodiff width must fit u32, but is {$width}")]
212    pub(crate) struct AutoDiffInvalidWidth {
213        #[primary_span]
214        pub(crate) span: Span,
215        pub(crate) width: u128,
216    }
217
218    #[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AutoDiffInvalidApplication where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AutoDiffInvalidApplication { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("autodiff must be applied to function")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
219    #[diag("autodiff must be applied to function")]
220    pub(crate) struct AutoDiffInvalidApplication {
221        #[primary_span]
222        pub(crate) span: Span,
223    }
224}
225
226#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConcatBytesInvalid where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytesInvalid {
                        span: __binding_0,
                        lit_kind: __binding_1,
                        sugg: __binding_2,
                        cs_note: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot concatenate {$lit_kind} literals")));
                        ;
                        diag.arg("lit_kind", __binding_1);
                        diag.span(__binding_0);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        if let Some(__binding_3) = __binding_3 {
                            diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("concatenating C strings is ambiguous about including the '\\0'")));
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
227#[diag("cannot concatenate {$lit_kind} literals")]
228pub(crate) struct ConcatBytesInvalid {
229    #[primary_span]
230    pub(crate) span: Span,
231    pub(crate) lit_kind: &'static str,
232    #[subdiagnostic]
233    pub(crate) sugg: Option<ConcatBytesInvalidSuggestion>,
234    #[note("concatenating C strings is ambiguous about including the '\\0'")]
235    pub(crate) cs_note: Option<()>,
236}
237
238#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ConcatBytesInvalidSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ConcatBytesInvalidSuggestion::CharLit {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_2 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("b{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try using a byte character")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_2, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    ConcatBytesInvalidSuggestion::StrLit {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_3 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("b{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try using a byte string")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_3, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    ConcatBytesInvalidSuggestion::CStrLit {
                        span: __binding_0, as_bstr: __binding_1 } => {
                        let __code_4 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("as_bstr", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("concatenating C strings is ambiguous about including the '\\0'")));
                        diag.span_note(__binding_0, __message);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try using a null-terminated byte string")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_4, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    ConcatBytesInvalidSuggestion::IntLit {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_5 =
                            [::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(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try wrapping the number in an array")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_5, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
239pub(crate) enum ConcatBytesInvalidSuggestion {
240    #[suggestion(
241        "try using a byte character",
242        code = "b{snippet}",
243        applicability = "machine-applicable"
244    )]
245    CharLit {
246        #[primary_span]
247        span: Span,
248        snippet: String,
249    },
250    #[suggestion(
251        "try using a byte string",
252        code = "b{snippet}",
253        applicability = "machine-applicable"
254    )]
255    StrLit {
256        #[primary_span]
257        span: Span,
258        snippet: String,
259    },
260    #[note("concatenating C strings is ambiguous about including the '\\0'")]
261    #[suggestion(
262        "try using a null-terminated byte string",
263        code = "{as_bstr}",
264        applicability = "machine-applicable"
265    )]
266    CStrLit {
267        #[primary_span]
268        span: Span,
269        as_bstr: String,
270    },
271    #[suggestion(
272        "try wrapping the number in an array",
273        code = "[{snippet}]",
274        applicability = "machine-applicable"
275    )]
276    IntLit {
277        #[primary_span]
278        span: Span,
279        snippet: String,
280    },
281}
282
283#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ConcatBytesOob
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytesOob { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("numeric literal is out of bounds")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
284#[diag("numeric literal is out of bounds")]
285pub(crate) struct ConcatBytesOob {
286    #[primary_span]
287    pub(crate) span: Span,
288}
289
290#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConcatBytesNonU8 where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytesNonU8 { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("numeric literal is not a `u8`")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
291#[diag("numeric literal is not a `u8`")]
292pub(crate) struct ConcatBytesNonU8 {
293    #[primary_span]
294    pub(crate) span: Span,
295}
296
297#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConcatBytesMissingLiteral where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytesMissingLiteral { spans: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected a byte literal")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only byte literals (like `b\"foo\"`, `b's'` and `[3, 4, 5]`) can be passed to `concat_bytes!()`")));
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
298#[diag("expected a byte literal")]
299#[note(
300    "only byte literals (like `b\"foo\"`, `b's'` and `[3, 4, 5]`) can be passed to `concat_bytes!()`"
301)]
302pub(crate) struct ConcatBytesMissingLiteral {
303    #[primary_span]
304    pub(crate) spans: Vec<Span>,
305}
306
307#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConcatBytesArray where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytesArray { span: __binding_0, bytestr: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot concatenate doubly nested array")));
                        ;
                        diag.span(__binding_0);
                        if __binding_1 {
                            diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("byte strings are treated as arrays of bytes")));
                        }
                        if __binding_1 {
                            diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try flattening the array")));
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
308#[diag("cannot concatenate doubly nested array")]
309pub(crate) struct ConcatBytesArray {
310    #[primary_span]
311    pub(crate) span: Span,
312    #[note("byte strings are treated as arrays of bytes")]
313    #[help("try flattening the array")]
314    pub(crate) bytestr: bool,
315}
316
317#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConcatBytesBadRepeat where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ConcatBytesBadRepeat { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("repeat count is not a positive number")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
318#[diag("repeat count is not a positive number")]
319pub(crate) struct ConcatBytesBadRepeat {
320    #[primary_span]
321    pub(crate) span: Span,
322}
323
324#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BadDeriveTarget where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    BadDeriveTarget { span: __binding_0, item: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`derive` may only be applied to `struct`s, `enum`s and `union`s")));
                        diag.code(E0774);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("not applicable here")));
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("not a `struct`, `enum` or `union`")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
325#[diag("`derive` may only be applied to `struct`s, `enum`s and `union`s", code = E0774)]
326pub(crate) struct BadDeriveTarget {
327    #[primary_span]
328    #[label("not applicable here")]
329    pub(crate) span: Span,
330    #[label("not a `struct`, `enum` or `union`")]
331    pub(crate) item: Span,
332}
333
334#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TestsNotSupport where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    TestsNotSupport {} => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("building tests with panic=abort is not supported without `-Zpanic_abort_tests`")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
335#[diag("building tests with panic=abort is not supported without `-Zpanic_abort_tests`")]
336pub(crate) struct TestsNotSupport {}
337
338#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for BadDeriveLit
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    BadDeriveLit { span: __binding_0, help: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected path to a trait, found literal")));
                        diag.code(E0777);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("not a trait")));
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
339#[diag("expected path to a trait, found literal", code = E0777)]
340pub(crate) struct BadDeriveLit {
341    #[primary_span]
342    #[label("not a trait")]
343    pub(crate) span: Span,
344    #[subdiagnostic]
345    pub help: BadDeriveLitHelp,
346}
347
348#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BadDeriveLitHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BadDeriveLitHelp::StrLit { sym: __binding_0 } => {
                        diag.store_args();
                        diag.arg("sym", __binding_0);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try using `#[derive({$sym})]`")));
                        diag.help(__message);
                        diag.restore_args();
                    }
                    BadDeriveLitHelp::Other => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("for example, write `#[derive(Debug)]` for `Debug`")));
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
349pub(crate) enum BadDeriveLitHelp {
350    #[help("try using `#[derive({$sym})]`")]
351    StrLit { sym: Symbol },
352    #[help("for example, write `#[derive(Debug)]` for `Debug`")]
353    Other,
354}
355
356#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DerivePathArgsList where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DerivePathArgsList { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("traits in `#[derive(...)]` don't accept arguments")));
                        let __code_6 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span_suggestions_with_style(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the arguments")),
                            __code_6, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
357#[diag("traits in `#[derive(...)]` don't accept arguments")]
358pub(crate) struct DerivePathArgsList {
359    #[suggestion("remove the arguments", code = "", applicability = "machine-applicable")]
360    #[primary_span]
361    pub(crate) span: Span,
362}
363
364#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DerivePathArgsValue where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DerivePathArgsValue { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("traits in `#[derive(...)]` don't accept values")));
                        let __code_7 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span_suggestions_with_style(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the value")),
                            __code_7, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
365#[diag("traits in `#[derive(...)]` don't accept values")]
366pub(crate) struct DerivePathArgsValue {
367    #[suggestion("remove the value", code = "", applicability = "machine-applicable")]
368    #[primary_span]
369    pub(crate) span: Span,
370}
371
372#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NoDefaultVariant where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    NoDefaultVariant {
                        span: __binding_0,
                        item_span: __binding_1,
                        suggs: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[derive(Default)]` on enum with no `#[default]`")));
                        diag.code(E0665);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this enum needs a unit variant marked with `#[default]`")));
                        for __binding_2 in __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
373#[diag("`#[derive(Default)]` on enum with no `#[default]`", code = E0665)]
374pub(crate) struct NoDefaultVariant {
375    #[primary_span]
376    pub(crate) span: Span,
377    #[label("this enum needs a unit variant marked with `#[default]`")]
378    pub(crate) item_span: Span,
379    #[subdiagnostic]
380    pub(crate) suggs: Vec<NoDefaultVariantSugg>,
381}
382
383#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NoDefaultVariantSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NoDefaultVariantSugg { span: __binding_0 } => {
                        let __code_8 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#[default] "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("make this unit variant default by placing `#[default]` on it")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_8, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
384#[suggestion(
385    "make this unit variant default by placing `#[default]` on it",
386    code = "#[default] ",
387    applicability = "maybe-incorrect"
388)]
389pub(crate) struct NoDefaultVariantSugg {
390    #[primary_span]
391    pub(crate) span: Span,
392}
393
394#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MultipleDefaults where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    MultipleDefaults {
                        span: __binding_0,
                        first: __binding_1,
                        additional: __binding_2,
                        suggs: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("multiple declared defaults")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only one variant can be default")));
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("first default")));
                        for __binding_2 in __binding_2 {
                            diag.span_label(__binding_2,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("additional default")));
                        }
                        for __binding_3 in __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
395#[diag("multiple declared defaults")]
396#[note("only one variant can be default")]
397pub(crate) struct MultipleDefaults {
398    #[primary_span]
399    pub(crate) span: Span,
400    #[label("first default")]
401    pub(crate) first: Span,
402    #[label("additional default")]
403    pub additional: Vec<Span>,
404    #[subdiagnostic]
405    pub suggs: Vec<MultipleDefaultsSugg>,
406}
407
408#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MultipleDefaultsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MultipleDefaultsSugg {
                        spans: __binding_0, ident: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_9 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_9.clone()));
                        }
                        diag.store_args();
                        diag.arg("ident", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("make `{$ident}` default")));
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
409#[multipart_suggestion(
410    "make `{$ident}` default",
411    applicability = "maybe-incorrect",
412    style = "tool-only"
413)]
414pub(crate) struct MultipleDefaultsSugg {
415    #[suggestion_part(code = "")]
416    pub(crate) spans: Vec<Span>,
417    pub(crate) ident: Ident,
418}
419
420#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for NonUnitDefault
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    NonUnitDefault { span: __binding_0, post: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `#[default]` attribute may only be used on unit enum variants{$post}")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider a manual implementation of `Default`")));
                        ;
                        diag.arg("post", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
421#[diag("the `#[default]` attribute may only be used on unit enum variants{$post}")]
422#[help("consider a manual implementation of `Default`")]
423pub(crate) struct NonUnitDefault {
424    #[primary_span]
425    pub(crate) span: Span,
426    pub(crate) post: &'static str,
427}
428
429#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NonExhaustiveDefault where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    NonExhaustiveDefault {
                        span: __binding_0, non_exhaustive: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("default variant must be exhaustive")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider a manual implementation of `Default`")));
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("declared `#[non_exhaustive]` here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
430#[diag("default variant must be exhaustive")]
431#[help("consider a manual implementation of `Default`")]
432pub(crate) struct NonExhaustiveDefault {
433    #[primary_span]
434    pub(crate) span: Span,
435    #[label("declared `#[non_exhaustive]` here")]
436    pub(crate) non_exhaustive: Span,
437}
438
439#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MultipleDefaultAttrs where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    MultipleDefaultAttrs {
                        span: __binding_0,
                        first: __binding_1,
                        first_rest: __binding_2,
                        rest: __binding_3,
                        only_one: __binding_4,
                        sugg: __binding_5 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("multiple `#[default]` attributes")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only one `#[default]` attribute is needed")));
                        ;
                        diag.arg("only_one", __binding_4);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[default]` used here")));
                        diag.span_label(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[default]` used again here")));
                        diag.span_help(__binding_3,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try removing {$only_one ->\n            [true] this\n            *[false] these\n        }")));
                        diag.subdiagnostic(__binding_5);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
440#[diag("multiple `#[default]` attributes")]
441#[note("only one `#[default]` attribute is needed")]
442pub(crate) struct MultipleDefaultAttrs {
443    #[primary_span]
444    pub(crate) span: Span,
445    #[label("`#[default]` used here")]
446    pub(crate) first: Span,
447    #[label("`#[default]` used again here")]
448    pub(crate) first_rest: Span,
449    #[help(
450        "try removing {$only_one ->
451            [true] this
452            *[false] these
453        }"
454    )]
455    pub(crate) rest: MultiSpan,
456    pub(crate) only_one: bool,
457    #[subdiagnostic]
458    pub(crate) sugg: MultipleDefaultAttrsSugg,
459}
460
461#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MultipleDefaultAttrsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MultipleDefaultAttrsSugg { spans: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_10 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_10.clone()));
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider a manual implementation of `Default`")));
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
462#[multipart_suggestion(
463    "consider a manual implementation of `Default`",
464    applicability = "machine-applicable",
465    style = "tool-only"
466)]
467pub(crate) struct MultipleDefaultAttrsSugg {
468    #[suggestion_part(code = "")]
469    pub(crate) spans: Vec<Span>,
470}
471
472#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DefaultHasArg
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DefaultHasArg { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[default]` attribute does not accept a value")));
                        let __code_11 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#[default]"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try using `#[default]`")),
                            __code_11, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::HideCodeAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
473#[diag("`#[default]` attribute does not accept a value")]
474pub(crate) struct DefaultHasArg {
475    #[primary_span]
476    #[suggestion(
477        "try using `#[default]`",
478        code = "#[default]",
479        style = "hidden",
480        applicability = "maybe-incorrect"
481    )]
482    pub(crate) span: Span,
483}
484
485#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            DeriveFromWrongTarget<'a> where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DeriveFromWrongTarget { span: __binding_0, kind: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[derive(From)]` used on {$kind}")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[derive(From)]` can only be used on structs with exactly one field")));
                        ;
                        diag.arg("kind", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
486#[diag("`#[derive(From)]` used on {$kind}")]
487#[note("`#[derive(From)]` can only be used on structs with exactly one field")]
488pub(crate) struct DeriveFromWrongTarget<'a> {
489    #[primary_span]
490    pub(crate) span: MultiSpan,
491    pub(crate) kind: &'a str,
492}
493
494#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DeriveFromWrongFieldCount where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DeriveFromWrongFieldCount {
                        span: __binding_0, multiple_fields: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[derive(From)]` used on a struct with {$multiple_fields ->\n        [true] multiple fields\n        *[false] no fields\n    }")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[derive(From)]` can only be used on structs with exactly one field")));
                        ;
                        diag.arg("multiple_fields", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
495#[diag(
496    "`#[derive(From)]` used on a struct with {$multiple_fields ->
497        [true] multiple fields
498        *[false] no fields
499    }"
500)]
501#[note("`#[derive(From)]` can only be used on structs with exactly one field")]
502pub(crate) struct DeriveFromWrongFieldCount {
503    #[primary_span]
504    pub(crate) span: MultiSpan,
505    pub(crate) multiple_fields: bool,
506}
507
508#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DeriveMacroCall where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DeriveMacroCall { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`derive` cannot be used on items with type macros")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
509#[diag("`derive` cannot be used on items with type macros")]
510pub(crate) struct DeriveMacroCall {
511    #[primary_span]
512    pub(crate) span: Span,
513}
514
515#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DeriveUnion
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    DeriveUnion { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this trait cannot be derived for unions")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
516#[diag("this trait cannot be derived for unions")]
517pub(crate) struct DeriveUnion {
518    #[primary_span]
519    pub(crate) span: Span,
520}
521
522#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for EnvTakesArgs
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EnvTakesArgs { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`env!()` takes 1 or 2 arguments")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
523#[diag("`env!()` takes 1 or 2 arguments")]
524pub(crate) struct EnvTakesArgs {
525    #[primary_span]
526    pub(crate) span: Span,
527}
528
529pub(crate) struct EnvNotDefinedWithUserMessage {
530    pub(crate) span: Span,
531    pub(crate) msg_from_user: Symbol,
532}
533
534// Hand-written implementation to support custom user messages.
535impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for EnvNotDefinedWithUserMessage {
536    #[track_caller]
537    fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
538        let mut diag = Diag::new(dcx, level, self.msg_from_user.to_string());
539        diag.span(self.span);
540        diag
541    }
542}
543
544#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            EnvNotDefined<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EnvNotDefined::CargoEnvVar {
                        span: __binding_0, var: __binding_1, var_expr: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("environment variable `{$var}` not defined at compile time")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("Cargo sets build script variables at run time. Use `std::env::var({$var_expr})` instead")));
                        ;
                        diag.arg("var", __binding_1);
                        diag.arg("var_expr", __binding_2);
                        diag.span(__binding_0);
                        diag
                    }
                    EnvNotDefined::CargoEnvVarTypo {
                        span: __binding_0,
                        var: __binding_1,
                        suggested_var: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("environment variable `{$var}` not defined at compile time")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a similar Cargo environment variable: `{$suggested_var}`")));
                        ;
                        diag.arg("var", __binding_1);
                        diag.arg("suggested_var", __binding_2);
                        diag.span(__binding_0);
                        diag
                    }
                    EnvNotDefined::CustomEnvVar {
                        span: __binding_0, var: __binding_1, var_expr: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("environment variable `{$var}` not defined at compile time")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use `std::env::var({$var_expr})` to read the variable at run time")));
                        ;
                        diag.arg("var", __binding_1);
                        diag.arg("var_expr", __binding_2);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
545pub(crate) enum EnvNotDefined<'a> {
546    #[diag("environment variable `{$var}` not defined at compile time")]
547    #[help(
548        "Cargo sets build script variables at run time. Use `std::env::var({$var_expr})` instead"
549    )]
550    CargoEnvVar {
551        #[primary_span]
552        span: Span,
553        var: Symbol,
554        var_expr: &'a rustc_ast::Expr,
555    },
556    #[diag("environment variable `{$var}` not defined at compile time")]
557    #[help("there is a similar Cargo environment variable: `{$suggested_var}`")]
558    CargoEnvVarTypo {
559        #[primary_span]
560        span: Span,
561        var: Symbol,
562        suggested_var: Symbol,
563    },
564    #[diag("environment variable `{$var}` not defined at compile time")]
565    #[help("use `std::env::var({$var_expr})` to read the variable at run time")]
566    CustomEnvVar {
567        #[primary_span]
568        span: Span,
569        var: Symbol,
570        var_expr: &'a rustc_ast::Expr,
571    },
572}
573
574#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for EnvNotUnicode
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EnvNotUnicode { span: __binding_0, var: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("environment variable `{$var}` is not a valid Unicode string")));
                        ;
                        diag.arg("var", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
575#[diag("environment variable `{$var}` is not a valid Unicode string")]
576pub(crate) struct EnvNotUnicode {
577    #[primary_span]
578    pub(crate) span: Span,
579    pub(crate) var: Symbol,
580}
581
582#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatRequiresString where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatRequiresString { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("requires at least a format string argument")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
583#[diag("requires at least a format string argument")]
584pub(crate) struct FormatRequiresString {
585    #[primary_span]
586    pub(crate) span: Span,
587}
588
589#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatDuplicateArg where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatDuplicateArg {
                        span: __binding_0,
                        prev: __binding_1,
                        duplicate: __binding_2,
                        ident: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("duplicate argument named `{$ident}`")));
                        ;
                        diag.arg("ident", __binding_3);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("previously here")));
                        diag.span_label(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("duplicate argument")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
590#[diag("duplicate argument named `{$ident}`")]
591pub(crate) struct FormatDuplicateArg {
592    #[primary_span]
593    pub(crate) span: Span,
594    #[label("previously here")]
595    pub(crate) prev: Span,
596    #[label("duplicate argument")]
597    pub(crate) duplicate: Span,
598    pub(crate) ident: Ident,
599}
600
601#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PositionalAfterNamed where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    PositionalAfterNamed { span: __binding_0, args: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("positional arguments cannot follow named arguments")));
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("positional arguments must be before named arguments")));
                        for __binding_1 in __binding_1 {
                            diag.span_label(__binding_1,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("named argument")));
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
602#[diag("positional arguments cannot follow named arguments")]
603pub(crate) struct PositionalAfterNamed {
604    #[primary_span]
605    #[label("positional arguments must be before named arguments")]
606    pub(crate) span: Span,
607    #[label("named argument")]
608    pub(crate) args: Vec<Span>,
609}
610
611#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidFormatString where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    InvalidFormatString {
                        span: __binding_0,
                        desc: __binding_1,
                        label1: __binding_2,
                        note_: __binding_3,
                        label_: __binding_4,
                        sugg_: __binding_5 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid format string: {$desc}")));
                        ;
                        diag.arg("desc", __binding_1);
                        diag.arg("label1", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$label1} in format string")));
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        if let Some(__binding_5) = __binding_5 {
                            diag.subdiagnostic(__binding_5);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
612#[diag("invalid format string: {$desc}")]
613pub(crate) struct InvalidFormatString {
614    #[primary_span]
615    #[label("{$label1} in format string")]
616    pub(crate) span: Span,
617    pub(crate) desc: String,
618    pub(crate) label1: String,
619    #[subdiagnostic]
620    pub(crate) note_: Option<InvalidFormatStringNote>,
621    #[subdiagnostic]
622    pub(crate) label_: Option<InvalidFormatStringLabel>,
623    #[subdiagnostic]
624    pub(crate) sugg_: Option<InvalidFormatStringSuggestion>,
625}
626
627#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidFormatStringNote {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidFormatStringNote { note: __binding_0 } => {
                        diag.store_args();
                        diag.arg("note", __binding_0);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$note}")));
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
628#[note("{$note}")]
629pub(crate) struct InvalidFormatStringNote {
630    pub(crate) note: String,
631}
632
633#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidFormatStringLabel {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidFormatStringLabel {
                        span: __binding_0, label: __binding_1 } => {
                        diag.store_args();
                        diag.arg("label", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$label}")));
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
634#[label("{$label}")]
635pub(crate) struct InvalidFormatStringLabel {
636    #[primary_span]
637    pub(crate) span: Span,
638    pub(crate) label: String,
639}
640
641#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidFormatStringSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidFormatStringSuggestion::UsePositional {
                        captured: __binding_0,
                        len: __binding_1,
                        span: __binding_2,
                        arg: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_12 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                });
                        let __code_13 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(", {0}", __binding_3))
                                });
                        suggestions.push((__binding_0, __code_12));
                        suggestions.push((__binding_2, __code_13));
                        diag.store_args();
                        diag.arg("len", __binding_1);
                        diag.arg("arg", __binding_3);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider using a positional formatting argument instead")));
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidFormatStringSuggestion::RemoveRawIdent {
                        span: __binding_0 } => {
                        let __code_14 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the `r#`")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_14, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    InvalidFormatStringSuggestion::ReorderFormatParameter {
                        span: __binding_0, replacement: __binding_1 } => {
                        let __code_15 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replacement", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("did you mean `{$replacement}`?")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_15, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidFormatStringSuggestion::AddMissingColon {
                        span: __binding_0 } => {
                        let __code_16 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(":?"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("add a colon before the format specifier")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_16, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    InvalidFormatStringSuggestion::UseRustDebugPrintingMacro {
                        macro_span: __binding_0, replacement: __binding_1 } => {
                        let __code_17 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("replacement", __binding_1);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use rust debug printing macro")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_17, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
642pub(crate) enum InvalidFormatStringSuggestion {
643    #[multipart_suggestion(
644        "consider using a positional formatting argument instead",
645        style = "verbose",
646        applicability = "machine-applicable"
647    )]
648    UsePositional {
649        #[suggestion_part(code = "{len}")]
650        captured: Span,
651        len: String,
652        #[suggestion_part(code = ", {arg}")]
653        span: Span,
654        arg: String,
655    },
656    #[suggestion("remove the `r#`", code = "", applicability = "machine-applicable")]
657    RemoveRawIdent {
658        #[primary_span]
659        span: Span,
660    },
661    #[suggestion(
662        "did you mean `{$replacement}`?",
663        code = "{replacement}",
664        style = "verbose",
665        applicability = "machine-applicable"
666    )]
667    ReorderFormatParameter {
668        #[primary_span]
669        span: Span,
670        replacement: String,
671    },
672    #[suggestion(
673        "add a colon before the format specifier",
674        code = ":?",
675        applicability = "machine-applicable"
676    )]
677    AddMissingColon {
678        #[primary_span]
679        span: Span,
680    },
681
682    #[suggestion(
683        "use rust debug printing macro",
684        code = "{replacement}",
685        style = "verbose",
686        applicability = "machine-applicable"
687    )]
688    UseRustDebugPrintingMacro {
689        #[primary_span]
690        macro_span: Span,
691        replacement: String,
692    },
693}
694
695#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatNoArgNamed where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatNoArgNamed { span: __binding_0, name: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is no argument named `{$name}`")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("did you intend to capture a variable `{$name}` from the surrounding scope?")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("to avoid ambiguity, `format_args!` cannot capture variables when the format string is expanded from a macro")));
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
696#[diag("there is no argument named `{$name}`")]
697#[note("did you intend to capture a variable `{$name}` from the surrounding scope?")]
698#[note(
699    "to avoid ambiguity, `format_args!` cannot capture variables when the format string is expanded from a macro"
700)]
701pub(crate) struct FormatNoArgNamed {
702    #[primary_span]
703    pub(crate) span: Span,
704    pub(crate) name: Symbol,
705}
706
707#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatUnknownTrait<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatUnknownTrait {
                        span: __binding_0, ty: __binding_1, suggs: __binding_2 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown format trait `{$ty}`")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the only appropriate formatting traits are:\n                                            - ``, which uses the `Display` trait\n                                            - `?`, which uses the `Debug` trait\n                                            - `e`, which uses the `LowerExp` trait\n                                            - `E`, which uses the `UpperExp` trait\n                                            - `o`, which uses the `Octal` trait\n                                            - `p`, which uses the `Pointer` trait\n                                            - `b`, which uses the `Binary` trait\n                                            - `x`, which uses the `LowerHex` trait\n                                            - `X`, which uses the `UpperHex` trait")));
                        ;
                        diag.arg("ty", __binding_1);
                        diag.span(__binding_0);
                        for __binding_2 in __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
708#[diag("unknown format trait `{$ty}`")]
709#[note(
710    "the only appropriate formatting traits are:
711                                            - ``, which uses the `Display` trait
712                                            - `?`, which uses the `Debug` trait
713                                            - `e`, which uses the `LowerExp` trait
714                                            - `E`, which uses the `UpperExp` trait
715                                            - `o`, which uses the `Octal` trait
716                                            - `p`, which uses the `Pointer` trait
717                                            - `b`, which uses the `Binary` trait
718                                            - `x`, which uses the `LowerHex` trait
719                                            - `X`, which uses the `UpperHex` trait"
720)]
721pub(crate) struct FormatUnknownTrait<'a> {
722    #[primary_span]
723    pub(crate) span: Span,
724    pub(crate) ty: &'a str,
725    #[subdiagnostic]
726    pub(crate) suggs: Vec<FormatUnknownTraitSugg>,
727}
728
729#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for FormatUnknownTraitSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FormatUnknownTraitSugg {
                        span: __binding_0, fmt: __binding_1, trait_name: __binding_2
                        } => {
                        let __code_18 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("fmt", __binding_1);
                        diag.arg("trait_name", __binding_2);
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use the `{$trait_name}` trait")));
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_18, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
730#[suggestion(
731    "use the `{$trait_name}` trait",
732    code = "{fmt}",
733    style = "tool-only",
734    applicability = "maybe-incorrect"
735)]
736pub(crate) struct FormatUnknownTraitSugg {
737    #[primary_span]
738    pub span: Span,
739    pub fmt: &'static str,
740    pub trait_name: &'static str,
741}
742
743#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatUnusedArg where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatUnusedArg { span: __binding_0, named: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$named ->\n        [true] named argument\n        *[false] argument\n    } never used")));
                        ;
                        diag.arg("named", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$named ->\n            [true] named argument\n            *[false] argument\n        } never used")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
744#[diag(
745    "{$named ->
746        [true] named argument
747        *[false] argument
748    } never used"
749)]
750pub(crate) struct FormatUnusedArg {
751    #[primary_span]
752    #[label(
753        "{$named ->
754            [true] named argument
755            *[false] argument
756        } never used"
757    )]
758    pub(crate) span: Span,
759    pub(crate) named: bool,
760}
761
762// Allow the singular form to be a subdiagnostic of the multiple-unused
763// form of diagnostic.
764impl Subdiagnostic for FormatUnusedArg {
765    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
766        diag.arg("named", self.named);
767        let msg = diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$named ->
                [true] named argument
                *[false] argument
            } never used"))inline_fluent!(
768            "{$named ->
769                [true] named argument
770                *[false] argument
771            } never used"
772        ));
773        diag.remove_arg("named");
774        diag.span_label(self.span, msg);
775    }
776}
777
778#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatUnusedArgs where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatUnusedArgs {
                        unused: __binding_0,
                        fmt: __binding_1,
                        unused_labels: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("multiple unused formatting arguments")));
                        ;
                        diag.span(__binding_0.clone());
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("multiple missing formatting specifiers")));
                        for __binding_2 in __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
779#[diag("multiple unused formatting arguments")]
780pub(crate) struct FormatUnusedArgs {
781    #[primary_span]
782    pub(crate) unused: Vec<Span>,
783    #[label("multiple missing formatting specifiers")]
784    pub(crate) fmt: Span,
785    #[subdiagnostic]
786    pub(crate) unused_labels: Vec<FormatUnusedArg>,
787}
788
789#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatPositionalMismatch where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatPositionalMismatch {
                        span: __binding_0,
                        n: __binding_1,
                        desc: __binding_2,
                        highlight: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$n} positional {$n ->\n        [one] argument\n        *[more] arguments\n    } in format string, but {$desc}")));
                        ;
                        diag.arg("n", __binding_1);
                        diag.arg("desc", __binding_2);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
790#[diag(
791    "{$n} positional {$n ->
792        [one] argument
793        *[more] arguments
794    } in format string, but {$desc}"
795)]
796pub(crate) struct FormatPositionalMismatch {
797    #[primary_span]
798    pub(crate) span: MultiSpan,
799    pub(crate) n: usize,
800    pub(crate) desc: String,
801    #[subdiagnostic]
802    pub(crate) highlight: SingleLabelManySpans,
803}
804
805#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FormatRedundantArgs where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    FormatRedundantArgs {
                        span: __binding_0,
                        n: __binding_1,
                        note: __binding_2,
                        sugg: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("redundant {$n ->\n        [one] argument\n        *[more] arguments\n    }")));
                        ;
                        diag.arg("n", __binding_1);
                        diag.span(__binding_0);
                        diag.span_note(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$n ->\n            [one] the formatting specifier is referencing the binding already\n            *[more] the formatting specifiers are referencing the bindings already\n        }")));
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
806#[diag(
807    "redundant {$n ->
808        [one] argument
809        *[more] arguments
810    }"
811)]
812pub(crate) struct FormatRedundantArgs {
813    #[primary_span]
814    pub(crate) span: MultiSpan,
815    pub(crate) n: usize,
816
817    #[note(
818        "{$n ->
819            [one] the formatting specifier is referencing the binding already
820            *[more] the formatting specifiers are referencing the bindings already
821        }"
822    )]
823    pub(crate) note: MultiSpan,
824
825    #[subdiagnostic]
826    pub(crate) sugg: Option<FormatRedundantArgsSugg>,
827}
828
829#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for FormatRedundantArgsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FormatRedundantArgsSugg { spans: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_19 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_19.clone()));
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this can be removed")));
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
830#[multipart_suggestion("this can be removed", applicability = "machine-applicable")]
831pub(crate) struct FormatRedundantArgsSugg {
832    #[suggestion_part(code = "")]
833    pub(crate) spans: Vec<Span>,
834}
835
836#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TestCaseNonItem where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    TestCaseNonItem { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[test_case]` attribute is only allowed on items")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
837#[diag("`#[test_case]` attribute is only allowed on items")]
838pub(crate) struct TestCaseNonItem {
839    #[primary_span]
840    pub(crate) span: Span,
841}
842
843#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for TestBadFn
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    TestBadFn {
                        span: __binding_0, cause: __binding_1, kind: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$kind} functions cannot be used for tests")));
                        ;
                        diag.arg("kind", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$kind}` because of this")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
844#[diag("{$kind} functions cannot be used for tests")]
845pub(crate) struct TestBadFn {
846    #[primary_span]
847    pub(crate) span: Span,
848    #[label("`{$kind}` because of this")]
849    pub(crate) cause: Span,
850    pub(crate) kind: &'static str,
851}
852
853#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmExplicitRegisterName where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmExplicitRegisterName { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("explicit register arguments cannot have names")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
854#[diag("explicit register arguments cannot have names")]
855pub(crate) struct AsmExplicitRegisterName {
856    #[primary_span]
857    pub(crate) span: Span,
858}
859
860#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmMutuallyExclusive where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmMutuallyExclusive {
                        spans: __binding_0, opt1: __binding_1, opt2: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `{$opt1}` and `{$opt2}` options are mutually exclusive")));
                        ;
                        diag.arg("opt1", __binding_1);
                        diag.arg("opt2", __binding_2);
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
861#[diag("the `{$opt1}` and `{$opt2}` options are mutually exclusive")]
862pub(crate) struct AsmMutuallyExclusive {
863    #[primary_span]
864    pub(crate) spans: Vec<Span>,
865    pub(crate) opt1: &'static str,
866    pub(crate) opt2: &'static str,
867}
868
869#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AsmPureCombine
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmPureCombine { spans: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `pure` option must be combined with either `nomem` or `readonly`")));
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
870#[diag("the `pure` option must be combined with either `nomem` or `readonly`")]
871pub(crate) struct AsmPureCombine {
872    #[primary_span]
873    pub(crate) spans: Vec<Span>,
874}
875
876#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmPureNoOutput where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmPureNoOutput { spans: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm with the `pure` option must have at least one output")));
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
877#[diag("asm with the `pure` option must have at least one output")]
878pub(crate) struct AsmPureNoOutput {
879    #[primary_span]
880    pub(crate) spans: Vec<Span>,
881}
882
883#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmModifierInvalid where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmModifierInvalid { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm template modifier must be a single character")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
884#[diag("asm template modifier must be a single character")]
885pub(crate) struct AsmModifierInvalid {
886    #[primary_span]
887    pub(crate) span: Span,
888}
889
890#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmAttributeNotSupported where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmAttributeNotSupported { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this attribute is not supported on assembly")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
891#[diag("this attribute is not supported on assembly")]
892pub(crate) struct AsmAttributeNotSupported {
893    #[primary_span]
894    pub(crate) span: Span,
895}
896
897#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmDuplicateArg where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmDuplicateArg {
                        span: __binding_0, prev: __binding_1, name: __binding_2 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("duplicate argument named `{$name}`")));
                        ;
                        diag.arg("name", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("duplicate argument")));
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("previously here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
898#[diag("duplicate argument named `{$name}`")]
899pub(crate) struct AsmDuplicateArg {
900    #[primary_span]
901    #[label("duplicate argument")]
902    pub(crate) span: Span,
903    #[label("previously here")]
904    pub(crate) prev: Span,
905    pub(crate) name: Symbol,
906}
907
908#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmPositionalAfter where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmPositionalAfter {
                        span: __binding_0, named: __binding_1, explicit: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("positional arguments cannot follow named arguments or explicit register arguments")));
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("positional argument")));
                        for __binding_1 in __binding_1 {
                            diag.span_label(__binding_1,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("named argument")));
                        }
                        for __binding_2 in __binding_2 {
                            diag.span_label(__binding_2,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("explicit register argument")));
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
909#[diag("positional arguments cannot follow named arguments or explicit register arguments")]
910pub(crate) struct AsmPositionalAfter {
911    #[primary_span]
912    #[label("positional argument")]
913    pub(crate) span: Span,
914    #[label("named argument")]
915    pub(crate) named: Vec<Span>,
916    #[label("explicit register argument")]
917    pub(crate) explicit: Vec<Span>,
918}
919
920#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AsmNoReturn
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmNoReturn { outputs_sp: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm outputs are not allowed with the `noreturn` option")));
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
921#[diag("asm outputs are not allowed with the `noreturn` option")]
922pub(crate) struct AsmNoReturn {
923    #[primary_span]
924    pub(crate) outputs_sp: Vec<Span>,
925}
926
927#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmNoMatchedArgumentName where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmNoMatchedArgumentName {
                        name: __binding_0, span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is no argument named `{$name}`")));
                        ;
                        diag.arg("name", __binding_0);
                        diag.span(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
928#[diag("there is no argument named `{$name}`")]
929pub(crate) struct AsmNoMatchedArgumentName {
930    pub(crate) name: String,
931    #[primary_span]
932    pub(crate) span: Span,
933}
934
935#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AsmMayUnwind
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmMayUnwind { labels_sp: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm labels are not allowed with the `may_unwind` option")));
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
936#[diag("asm labels are not allowed with the `may_unwind` option")]
937pub(crate) struct AsmMayUnwind {
938    #[primary_span]
939    pub(crate) labels_sp: Vec<Span>,
940}
941
942pub(crate) struct AsmClobberNoReg {
943    pub(crate) spans: Vec<Span>,
944    pub(crate) clobbers: Vec<Span>,
945}
946
947impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for AsmClobberNoReg {
948    fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
949        // eager translation as `span_labels` takes `AsRef<str>`
950        let lbl1 = dcx.eagerly_translate_to_string(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("clobber_abi"))inline_fluent!("clobber_abi"), [].into_iter());
951        let lbl2 =
952            dcx.eagerly_translate_to_string(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("generic outputs"))inline_fluent!("generic outputs"), [].into_iter());
953        Diag::new(
954            dcx,
955            level,
956            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm with `clobber_abi` must specify explicit registers for outputs"))inline_fluent!("asm with `clobber_abi` must specify explicit registers for outputs"),
957        )
958        .with_span(self.spans.clone())
959        .with_span_labels(self.clobbers, &lbl1)
960        .with_span_labels(self.spans, &lbl2)
961    }
962}
963
964#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmOptAlreadyprovided where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmOptAlreadyprovided {
                        span: __binding_0,
                        symbol: __binding_1,
                        span_with_comma: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `{$symbol}` option was already provided")));
                        let __code_20 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("symbol", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this option was already provided")));
                        diag.span_suggestions_with_style(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this option")),
                            __code_20, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
965#[diag("the `{$symbol}` option was already provided")]
966pub(crate) struct AsmOptAlreadyprovided {
967    #[primary_span]
968    #[label("this option was already provided")]
969    pub(crate) span: Span,
970    pub(crate) symbol: Symbol,
971    #[suggestion(
972        "remove this option",
973        code = "",
974        applicability = "machine-applicable",
975        style = "tool-only"
976    )]
977    pub(crate) span_with_comma: Span,
978}
979
980#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmUnsupportedOption where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmUnsupportedOption {
                        span: __binding_0,
                        symbol: __binding_1,
                        span_with_comma: __binding_2,
                        macro_name: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `{$symbol}` option cannot be used with `{$macro_name}!`")));
                        let __code_21 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("symbol", __binding_1);
                        diag.arg("macro_name", __binding_3);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `{$symbol}` option is not meaningful for global-scoped inline assembly")));
                        diag.span_suggestions_with_style(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this option")),
                            __code_21, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
981#[diag("the `{$symbol}` option cannot be used with `{$macro_name}!`")]
982pub(crate) struct AsmUnsupportedOption {
983    #[primary_span]
984    #[label("the `{$symbol}` option is not meaningful for global-scoped inline assembly")]
985    pub(crate) span: Span,
986    pub(crate) symbol: Symbol,
987    #[suggestion(
988        "remove this option",
989        code = "",
990        applicability = "machine-applicable",
991        style = "tool-only"
992    )]
993    pub(crate) span_with_comma: Span,
994    pub(crate) macro_name: &'static str,
995}
996
997#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmUnsupportedClobberAbi where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmUnsupportedClobberAbi {
                        spans: __binding_0, macro_name: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`clobber_abi` cannot be used with `{$macro_name}!`")));
                        ;
                        diag.arg("macro_name", __binding_1);
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
998#[diag("`clobber_abi` cannot be used with `{$macro_name}!`")]
999pub(crate) struct AsmUnsupportedClobberAbi {
1000    #[primary_span]
1001    pub(crate) spans: Vec<Span>,
1002    pub(crate) macro_name: &'static str,
1003}
1004
1005#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedCommaInList where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ExpectedCommaInList { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected token: `,`")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1006#[diag("expected token: `,`")]
1007pub(crate) struct ExpectedCommaInList {
1008    #[primary_span]
1009    pub span: Span,
1010}
1011
1012#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            OnlyOneArgument<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    OnlyOneArgument { span: __binding_0, name: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$name} takes 1 argument")));
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1013#[diag("{$name} takes 1 argument")]
1014pub(crate) struct OnlyOneArgument<'a> {
1015    #[primary_span]
1016    pub span: Span,
1017    pub name: &'a str,
1018}
1019
1020#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            TakesNoArguments<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    TakesNoArguments { span: __binding_0, name: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$name} takes no arguments")));
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1021#[diag("{$name} takes no arguments")]
1022pub(crate) struct TakesNoArguments<'a> {
1023    #[primary_span]
1024    pub span: Span,
1025    pub name: &'a str,
1026}
1027
1028#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            AttributeOnlyUsableWithCrateType<'a> where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AttributeOnlyUsableWithCrateType {
                        span: __binding_0, path: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `#[{$path}]` attribute is only usable with crates of the `proc-macro` crate type")));
                        ;
                        diag.arg("path", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1029#[diag("the `#[{$path}]` attribute is only usable with crates of the `proc-macro` crate type")]
1030pub(crate) struct AttributeOnlyUsableWithCrateType<'a> {
1031    #[primary_span]
1032    pub span: Span,
1033    pub path: &'a str,
1034}
1035
1036#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedItem<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    ExpectedItem { span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected item, found `{$token}`")));
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1037#[diag("expected item, found `{$token}`")]
1038pub(crate) struct ExpectedItem<'a> {
1039    #[primary_span]
1040    pub span: Span,
1041    pub token: &'a str,
1042}
1043
1044#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NakedFunctionTestingAttribute where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    NakedFunctionTestingAttribute {
                        naked_span: __binding_0, testing_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("cannot use `#[unsafe(naked)]` with testing attributes")));
                        diag.code(E0736);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[unsafe(naked)]` is incompatible with testing attributes")));
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("function marked with testing attribute here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1045#[diag("cannot use `#[unsafe(naked)]` with testing attributes", code = E0736)]
1046pub(crate) struct NakedFunctionTestingAttribute {
1047    #[primary_span]
1048    #[label("`#[unsafe(naked)]` is incompatible with testing attributes")]
1049    pub naked_span: Span,
1050    #[label("function marked with testing attribute here")]
1051    pub testing_span: Span,
1052}
1053
1054#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NonGenericPointee where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    NonGenericPointee { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `#[pointee]` attribute may only be used on generic parameters")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1055#[diag("the `#[pointee]` attribute may only be used on generic parameters")]
1056pub(crate) struct NonGenericPointee {
1057    #[primary_span]
1058    pub span: Span,
1059}
1060
1061#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmExpectedOther where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmExpectedOther {
                        span: __binding_0, is_inline_asm: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected operand, {$is_inline_asm ->\n        [false] options\n        *[true] clobber_abi, options\n    }, or additional template string")));
                        ;
                        diag.arg("is_inline_asm", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected operand, {$is_inline_asm ->\n            [false] options\n            *[true] clobber_abi, options\n        }, or additional template string")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1062#[diag(
1063    "expected operand, {$is_inline_asm ->
1064        [false] options
1065        *[true] clobber_abi, options
1066    }, or additional template string"
1067)]
1068pub(crate) struct AsmExpectedOther {
1069    #[primary_span]
1070    #[label(
1071        "expected operand, {$is_inline_asm ->
1072            [false] options
1073            *[true] clobber_abi, options
1074        }, or additional template string"
1075    )]
1076    pub(crate) span: Span,
1077    pub(crate) is_inline_asm: bool,
1078}
1079
1080#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CfgSelectNoMatches where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    CfgSelectNoMatches { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("none of the predicates in this `cfg_select` evaluated to true")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1081#[diag("none of the predicates in this `cfg_select` evaluated to true")]
1082pub(crate) struct CfgSelectNoMatches {
1083    #[primary_span]
1084    pub span: Span,
1085}
1086
1087#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EiiExternTargetExpectedMacro where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiExternTargetExpectedMacro { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[eii_declaration(...)]` is only valid on macros")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1088#[diag("`#[eii_declaration(...)]` is only valid on macros")]
1089pub(crate) struct EiiExternTargetExpectedMacro {
1090    #[primary_span]
1091    pub span: Span,
1092}
1093
1094#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EiiExternTargetExpectedList where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiExternTargetExpectedList { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[eii_declaration(...)]` expects a list of one or two elements")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1095#[diag("`#[eii_declaration(...)]` expects a list of one or two elements")]
1096pub(crate) struct EiiExternTargetExpectedList {
1097    #[primary_span]
1098    pub span: Span,
1099}
1100
1101#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EiiExternTargetExpectedUnsafe where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiExternTargetExpectedUnsafe { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected this argument to be \"unsafe\"")));
                        ;
                        diag.span(__binding_0);
                        diag.span_note(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the second argument is optional")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1102#[diag("expected this argument to be \"unsafe\"")]
1103pub(crate) struct EiiExternTargetExpectedUnsafe {
1104    #[primary_span]
1105    #[note("the second argument is optional")]
1106    pub span: Span,
1107}
1108
1109#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EiiSharedMacroExpectedFunction where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiSharedMacroExpectedFunction {
                        span: __binding_0, name: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` is only valid on functions")));
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1110#[diag("`#[{$name}]` is only valid on functions")]
1111pub(crate) struct EiiSharedMacroExpectedFunction {
1112    #[primary_span]
1113    pub span: Span,
1114    pub name: String,
1115}
1116
1117#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EiiSharedMacroInStatementPosition where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiSharedMacroInStatementPosition {
                        span: __binding_0, name: __binding_1, item_span: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` can only be used on functions inside a module")));
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` is used on this item, which is part of another item's local scope")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1118#[diag("`#[{$name}]` can only be used on functions inside a module")]
1119pub(crate) struct EiiSharedMacroInStatementPosition {
1120    #[primary_span]
1121    pub span: Span,
1122    pub name: String,
1123    #[label("`#[{$name}]` is used on this item, which is part of another item's local scope")]
1124    pub item_span: Span,
1125}
1126
1127#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for EiiOnlyOnce
            where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiOnlyOnce {
                        span: __binding_0,
                        first_span: __binding_1,
                        name: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` can only be specified once")));
                        ;
                        diag.arg("name", __binding_2);
                        diag.span(__binding_0);
                        diag.span_note(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("specified again here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1128#[diag("`#[{$name}]` can only be specified once")]
1129pub(crate) struct EiiOnlyOnce {
1130    #[primary_span]
1131    pub span: Span,
1132    #[note("specified again here")]
1133    pub first_span: Span,
1134    pub name: String,
1135}
1136
1137#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EiiMacroExpectedMaxOneArgument where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    EiiMacroExpectedMaxOneArgument {
                        span: __binding_0, name: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` expected no arguments or a single argument: `#[{$name}(default)]`")));
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1138#[diag("`#[{$name}]` expected no arguments or a single argument: `#[{$name}(default)]`")]
1139pub(crate) struct EiiMacroExpectedMaxOneArgument {
1140    #[primary_span]
1141    pub span: Span,
1142    pub name: String,
1143}