Skip to main content

rustc_attr_parsing/
errors.rs

1use rustc_errors::{Applicability, DiagArgValue, MultiSpan};
2use rustc_macros::{Diagnostic, Subdiagnostic};
3use rustc_span::{Span, Symbol};
4
5#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidAttrAtCrateLevel 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 {
                    InvalidAttrAtCrateLevel {
                        span: __binding_0,
                        pound_to_opening_bracket: __binding_1,
                        name: __binding_2,
                        item: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$name}` attribute cannot be used at crate level")));
                        let __code_0 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#["))
                                            })].into_iter();
                        ;
                        diag.arg("name", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("perhaps you meant to use an outer attribute")),
                            __code_0, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
6#[diag("`{$name}` attribute cannot be used at crate level")]
7pub(crate) struct InvalidAttrAtCrateLevel {
8    #[primary_span]
9    pub span: Span,
10    #[suggestion(
11        "perhaps you meant to use an outer attribute",
12        code = "#[",
13        applicability = "machine-applicable",
14        style = "verbose"
15    )]
16    pub pound_to_opening_bracket: Span,
17    pub name: Symbol,
18    #[subdiagnostic]
19    pub item: Option<ItemFollowingInnerAttr>,
20}
21
22#[derive(#[automatically_derived]
impl ::core::clone::Clone for ItemFollowingInnerAttr {
    #[inline]
    fn clone(&self) -> ItemFollowingInnerAttr {
        let _: ::core::clone::AssertParamIsClone<Span>;
        *self
    }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for ItemFollowingInnerAttr { }Copy, const _: () =
    {
        impl rustc_errors::Subdiagnostic for ItemFollowingInnerAttr {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ItemFollowingInnerAttr { span: __binding_0 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the inner attribute doesn't annotate this item")),
                                &sub_args);
                        diag.span_label(__binding_0, __message);
                    }
                }
            }
        }
    };Subdiagnostic)]
23#[label("the inner attribute doesn't annotate this item")]
24pub(crate) struct ItemFollowingInnerAttr {
25    #[primary_span]
26    pub span: Span,
27}
28
29#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnreachableCfgSelectPredicate 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 {
                    UnreachableCfgSelectPredicate { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unreachable configuration predicate")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this configuration predicate is never reached")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
30#[diag("unreachable configuration predicate")]
31pub(crate) struct UnreachableCfgSelectPredicate {
32    #[label("this configuration predicate is never reached")]
33    pub span: Span,
34}
35
36#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnsupportedAttributesInWhere 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 {
                    UnsupportedAttributesInWhere { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("most attributes are not supported in `where` clauses")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only `#[cfg]` and `#[cfg_attr]` are supported")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
37#[diag("most attributes are not supported in `where` clauses")]
38#[help("only `#[cfg]` and `#[cfg_attr]` are supported")]
39pub(crate) struct UnsupportedAttributesInWhere {
40    #[primary_span]
41    pub span: MultiSpan,
42}
43
44#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnreachableCfgSelectPredicateWildcard 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 {
                    UnreachableCfgSelectPredicateWildcard {
                        span: __binding_0, wildcard_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unreachable configuration predicate")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this configuration predicate is never reached")));
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("always matches")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
45#[diag("unreachable configuration predicate")]
46pub(crate) struct UnreachableCfgSelectPredicateWildcard {
47    #[label("this configuration predicate is never reached")]
48    pub span: Span,
49
50    #[label("always matches")]
51    pub wildcard_span: Span,
52}
53
54#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MustBeNameOfAssociatedFunction 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 {
                    MustBeNameOfAssociatedFunction { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("must be a name of an associated function")));
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
55#[diag("must be a name of an associated function")]
56pub(crate) struct MustBeNameOfAssociatedFunction {
57    #[primary_span]
58    pub span: Span,
59}
60
61#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnsafeAttrOutsideUnsafeLint 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 {
                    UnsafeAttrOutsideUnsafeLint {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unsafe attribute used without unsafe")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("usage of unsafe attribute")));
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
62#[diag("unsafe attribute used without unsafe")]
63pub(crate) struct UnsafeAttrOutsideUnsafeLint {
64    #[label("usage of unsafe attribute")]
65    pub span: Span,
66    #[subdiagnostic]
67    pub suggestion: Option<crate::session_diagnostics::UnsafeAttrOutsideUnsafeSuggestion>,
68}
69
70#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IllFormedAttributeInput 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 {
                    IllFormedAttributeInput {
                        num_suggestions: __binding_0,
                        suggestions: __binding_1,
                        has_docs: __binding_2,
                        docs: __binding_3,
                        help: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$num_suggestions ->\n        [1] attribute must be of the form {$suggestions}\n        *[other] valid forms for the attribute are {$suggestions}\n    }")));
                        ;
                        diag.arg("num_suggestions", __binding_0);
                        diag.arg("suggestions", __binding_1);
                        diag.arg("docs", __binding_3);
                        if __binding_2 {
                            diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("for more information, visit <{$docs}>")));
                        }
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
71#[diag(
72    "{$num_suggestions ->
73        [1] attribute must be of the form {$suggestions}
74        *[other] valid forms for the attribute are {$suggestions}
75    }"
76)]
77pub(crate) struct IllFormedAttributeInput {
78    pub num_suggestions: usize,
79    pub suggestions: DiagArgValue,
80    #[note("for more information, visit <{$docs}>")]
81    pub has_docs: bool,
82    pub docs: &'static str,
83    #[subdiagnostic]
84    help: Option<IllFormedAttributeInputHelp>,
85}
86
87impl IllFormedAttributeInput {
88    pub(crate) fn new(
89        suggestions: &[String],
90        docs: Option<&'static str>,
91        help: Option<&str>,
92    ) -> Self {
93        Self {
94            num_suggestions: suggestions.len(),
95            suggestions: DiagArgValue::StrListSepByAnd(
96                suggestions.into_iter().map(|s| ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("`{0}`", s))
    })format!("`{s}`").into()).collect(),
97            ),
98            has_docs: docs.is_some(),
99            docs: docs.unwrap_or(""),
100            help: help.map(|h| IllFormedAttributeInputHelp { lint: h.to_string() }),
101        }
102    }
103}
104
105#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for IllFormedAttributeInputHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    IllFormedAttributeInputHelp { lint: __binding_0 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("lint".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("if you meant to silence a warning, consider using #![allow({$lint})] or #![expect({$lint})]")),
                                &sub_args);
                        diag.help(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
106#[help(
107    "if you meant to silence a warning, consider using #![allow({$lint})] or #![expect({$lint})]"
108)]
109struct IllFormedAttributeInputHelp {
110    pub lint: String,
111}
112
113#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EmptyAttributeList 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 {
                    EmptyAttributeList {
                        attr_span: __binding_0,
                        attr_path: __binding_1,
                        valid_without_list: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unused attribute")));
                        let __code_1 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$valid_without_list ->\n        [true] using `{$attr_path}` with an empty list is equivalent to not using a list at all\n        *[other] using `{$attr_path}` with an empty list has no effect\n    }")));
                        ;
                        diag.arg("attr_path", __binding_1);
                        diag.arg("valid_without_list", __binding_2);
                        diag.span_suggestions_with_style(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$valid_without_list ->\n            [true] remove these parentheses\n            *[other] remove this attribute\n        }")),
                            __code_1, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
114#[diag("unused attribute")]
115#[note(
116    "{$valid_without_list ->
117        [true] using `{$attr_path}` with an empty list is equivalent to not using a list at all
118        *[other] using `{$attr_path}` with an empty list has no effect
119    }"
120)]
121pub(crate) struct EmptyAttributeList {
122    #[suggestion(
123        "{$valid_without_list ->
124            [true] remove these parentheses
125            *[other] remove this attribute
126        }",
127        code = "",
128        applicability = "machine-applicable"
129    )]
130    pub attr_span: Span,
131    pub attr_path: String,
132    pub valid_without_list: bool,
133}
134
135#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidTargetLint 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 {
                    InvalidTargetLint {
                        name: __binding_0,
                        target: __binding_1,
                        applied: __binding_2,
                        only: __binding_3,
                        attr_span: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` attribute cannot be used on {$target}")));
                        let __code_2 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.warn(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[{$name}]` can {$only}be applied to {$applied}")));
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("target", __binding_1);
                        diag.arg("applied", __binding_2);
                        diag.arg("only", __binding_3);
                        diag.span_suggestions_with_style(__binding_4,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the attribute")),
                            __code_2, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
136#[diag("`#[{$name}]` attribute cannot be used on {$target}")]
137#[warning(
138    "this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!"
139)]
140#[help("`#[{$name}]` can {$only}be applied to {$applied}")]
141pub(crate) struct InvalidTargetLint {
142    pub name: String,
143    pub target: &'static str,
144    pub applied: DiagArgValue,
145    pub only: &'static str,
146    #[suggestion(
147        "remove the attribute",
148        code = "",
149        applicability = "machine-applicable",
150        style = "tool-only"
151    )]
152    pub attr_span: Span,
153}
154
155#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidAttrStyle 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 {
                    InvalidAttrStyle {
                        name: __binding_0,
                        is_used_as_inner: __binding_1,
                        target_span: __binding_2,
                        target: __binding_3,
                        crate_root_path: __binding_4,
                        show_crate_root_help: __binding_5 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$is_used_as_inner ->\n        [false] crate-level attribute should be an inner attribute: add an exclamation mark: `#![{$name}]`\n        *[other] the `#![{$name}]` attribute can only be used at the crate root\n    }")));
                        ;
                        diag.arg("name", __binding_0);
                        diag.arg("is_used_as_inner", __binding_1);
                        diag.arg("target", __binding_3);
                        diag.arg("crate_root_path", __binding_4);
                        if let Some(__binding_2) = __binding_2 {
                            diag.span_note(__binding_2,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this attribute does not have an `!`, which means it is applied to this {$target}")));
                        }
                        if __binding_5 {
                            diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the crate root is at `{$crate_root_path}`")));
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
156#[diag(
157    "{$is_used_as_inner ->
158        [false] crate-level attribute should be an inner attribute: add an exclamation mark: `#![{$name}]`
159        *[other] the `#![{$name}]` attribute can only be used at the crate root
160    }"
161)]
162pub(crate) struct InvalidAttrStyle {
163    pub name: String,
164    pub is_used_as_inner: bool,
165    #[note("this attribute does not have an `!`, which means it is applied to this {$target}")]
166    pub target_span: Option<Span>,
167    pub target: &'static str,
168    pub crate_root_path: String,
169    #[help("the crate root is at `{$crate_root_path}`")]
170    pub show_crate_root_help: bool,
171}
172
173#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocAliasDuplicated 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 {
                    DocAliasDuplicated { first_definition: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("doc alias is duplicated")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("first defined here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
174#[diag("doc alias is duplicated")]
175pub(crate) struct DocAliasDuplicated {
176    #[label("first defined here")]
177    pub first_definition: Span,
178}
179
180#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocAutoCfgExpectsHideOrShow 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 {
                    DocAutoCfgExpectsHideOrShow => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only `hide` or `show` are allowed in `#[doc(auto_cfg(...))]`")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
181#[diag("only `hide` or `show` are allowed in `#[doc(auto_cfg(...))]`")]
182pub(crate) struct DocAutoCfgExpectsHideOrShow;
183
184#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AmbiguousDeriveHelpers 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 {
                    AmbiguousDeriveHelpers => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there exists a built-in attribute with the same name")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
185#[diag("there exists a built-in attribute with the same name")]
186pub(crate) struct AmbiguousDeriveHelpers;
187
188#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocAutoCfgHideShowUnexpectedItem 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 {
                    DocAutoCfgHideShowUnexpectedItem { attr_name: __binding_0 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#![doc(auto_cfg({$attr_name}(...)))]` only accepts identifiers or key/value items")));
                        ;
                        diag.arg("attr_name", __binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
189#[diag("`#![doc(auto_cfg({$attr_name}(...)))]` only accepts identifiers or key/value items")]
190pub(crate) struct DocAutoCfgHideShowUnexpectedItem {
191    pub attr_name: Symbol,
192}
193
194#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocAutoCfgHideShowExpectsList 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 {
                    DocAutoCfgHideShowExpectsList { attr_name: __binding_0 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#![doc(auto_cfg({$attr_name}(...)))]` expects a list of items")));
                        ;
                        diag.arg("attr_name", __binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
195#[diag("`#![doc(auto_cfg({$attr_name}(...)))]` expects a list of items")]
196pub(crate) struct DocAutoCfgHideShowExpectsList {
197    pub attr_name: Symbol,
198}
199
200#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocUnknownInclude 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 {
                    DocUnknownInclude {
                        inner: __binding_0, value: __binding_1, sugg: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown `doc` attribute `include`")));
                        let __code_3 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#{0}[doc = include_str!(\"{1}\")]",
                                                        __binding_0, __binding_1))
                                            })].into_iter();
                        ;
                        diag.arg("inner", __binding_0);
                        diag.arg("value", __binding_1);
                        diag.span_suggestions_with_style(__binding_2.0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use `doc = include_str!` instead")),
                            __code_3, __binding_2.1,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
201#[diag("unknown `doc` attribute `include`")]
202pub(crate) struct DocUnknownInclude {
203    pub inner: &'static str,
204    pub value: Symbol,
205    #[suggestion(
206        "use `doc = include_str!` instead",
207        code = "#{inner}[doc = include_str!(\"{value}\")]"
208    )]
209    pub sugg: (Span, Applicability),
210}
211
212#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocUnknownSpotlight 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 {
                    DocUnknownSpotlight { sugg_span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown `doc` attribute `spotlight`")));
                        let __code_4 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("notable_trait"))
                                            })].into_iter();
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`doc(spotlight)` was renamed to `doc(notable_trait)`")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`doc(spotlight)` is now a no-op")));
                        ;
                        diag.span_suggestions_with_style(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use `notable_trait` instead")),
                            __code_4, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
213#[diag("unknown `doc` attribute `spotlight`")]
214#[note("`doc(spotlight)` was renamed to `doc(notable_trait)`")]
215#[note("`doc(spotlight)` is now a no-op")]
216pub(crate) struct DocUnknownSpotlight {
217    #[suggestion(
218        "use `notable_trait` instead",
219        style = "short",
220        applicability = "machine-applicable",
221        code = "notable_trait"
222    )]
223    pub sugg_span: Span,
224}
225
226#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocUnknownPasses 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 {
                    DocUnknownPasses { name: __binding_0, note_span: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown `doc` attribute `{$name}`")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`doc` attribute `{$name}` no longer functions; see issue #44136 <https://github.com/rust-lang/rust/issues/44136>")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`doc({$name})` is now a no-op")));
                        ;
                        diag.arg("name", __binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("no longer functions")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
227#[diag("unknown `doc` attribute `{$name}`")]
228#[note(
229    "`doc` attribute `{$name}` no longer functions; see issue #44136 <https://github.com/rust-lang/rust/issues/44136>"
230)]
231#[note("`doc({$name})` is now a no-op")]
232pub(crate) struct DocUnknownPasses {
233    pub name: Symbol,
234    #[label("no longer functions")]
235    pub note_span: Span,
236}
237
238#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocUnknownPlugins 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 {
                    DocUnknownPlugins { label_span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown `doc` attribute `plugins`")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`doc` attribute `plugins` no longer functions; see issue #44136 <https://github.com/rust-lang/rust/issues/44136> and CVE-2018-1000622 <https://nvd.nist.gov/vuln/detail/CVE-2018-1000622>")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`doc(plugins)` is now a no-op")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("no longer functions")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
239#[diag("unknown `doc` attribute `plugins`")]
240#[note(
241    "`doc` attribute `plugins` no longer functions; see issue #44136 <https://github.com/rust-lang/rust/issues/44136> and CVE-2018-1000622 <https://nvd.nist.gov/vuln/detail/CVE-2018-1000622>"
242)]
243#[note("`doc(plugins)` is now a no-op")]
244pub(crate) struct DocUnknownPlugins {
245    #[label("no longer functions")]
246    pub label_span: Span,
247}
248
249#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DocUnknownAny
            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 {
                    DocUnknownAny { name: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown `doc` attribute `{$name}`")));
                        ;
                        diag.arg("name", __binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
250#[diag("unknown `doc` attribute `{$name}`")]
251pub(crate) struct DocUnknownAny {
252    pub name: Symbol,
253}
254
255#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocAutoCfgWrongLiteral 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 {
                    DocAutoCfgWrongLiteral => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected boolean for `#[doc(auto_cfg = ...)]`")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
256#[diag("expected boolean for `#[doc(auto_cfg = ...)]`")]
257pub(crate) struct DocAutoCfgWrongLiteral;
258
259#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocTestTakesList 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 {
                    DocTestTakesList => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[doc(test(...)]` takes a list of attributes")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
260#[diag("`#[doc(test(...)]` takes a list of attributes")]
261pub(crate) struct DocTestTakesList;
262
263#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DocTestUnknown
            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 {
                    DocTestUnknown { name: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unknown `doc(test)` attribute `{$name}`")));
                        ;
                        diag.arg("name", __binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
264#[diag("unknown `doc(test)` attribute `{$name}`")]
265pub(crate) struct DocTestUnknown {
266    pub name: Symbol,
267}
268
269#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DocTestLiteral
            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 {
                    DocTestLiteral => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#![doc(test(...)]` does not take a literal")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
270#[diag("`#![doc(test(...)]` does not take a literal")]
271pub(crate) struct DocTestLiteral;
272
273#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttrCrateLevelOnly 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 {
                    AttrCrateLevelOnly => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this attribute can only be applied at the crate level")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
274#[diag("this attribute can only be applied at the crate level")]
275#[note(
276    "read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information"
277)]
278pub(crate) struct AttrCrateLevelOnly;
279
280#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DoNotRecommendDoesNotExpectArgs 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 {
                    DoNotRecommendDoesNotExpectArgs => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::do_not_recommend]` does not expect any arguments")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
281#[diag("`#[diagnostic::do_not_recommend]` does not expect any arguments")]
282pub(crate) struct DoNotRecommendDoesNotExpectArgs;
283
284#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnknownCrateTypes 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 {
                    UnknownCrateTypes { sugg: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid `crate_type` value")));
                        ;
                        if let Some(__binding_0) = __binding_0 {
                            diag.subdiagnostic(__binding_0);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
285#[diag("invalid `crate_type` value")]
286pub(crate) struct UnknownCrateTypes {
287    #[subdiagnostic]
288    pub sugg: Option<UnknownCrateTypesSuggestion>,
289}
290
291#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnknownCrateTypesSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnknownCrateTypesSuggestion {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_5 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\"{0}\"", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("snippet".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("did you mean")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_5, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                }
            }
        }
    };Subdiagnostic)]
292#[suggestion("did you mean", code = r#""{snippet}""#, applicability = "maybe-incorrect")]
293pub(crate) struct UnknownCrateTypesSuggestion {
294    #[primary_span]
295    pub span: Span,
296    pub snippet: Symbol,
297}
298
299#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DiagnosticOnConstOnlyForTraitImpls 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 {
                    DiagnosticOnConstOnlyForTraitImpls {
                        target_span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::on_const]` can only be applied to non-const trait implementations")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("not a trait implementation")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
300#[diag("`#[diagnostic::on_const]` can only be applied to non-const trait implementations")]
301pub(crate) struct DiagnosticOnConstOnlyForTraitImpls {
302    #[label("not a trait implementation")]
303    pub target_span: Span,
304}
305
306#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DiagnosticOnMoveOnlyForAdt 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 {
                    DiagnosticOnMoveOnlyForAdt => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::on_move]` can only be applied to enums, structs or unions")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
307#[diag("`#[diagnostic::on_move]` can only be applied to enums, structs or unions")]
308pub(crate) struct DiagnosticOnMoveOnlyForAdt;
309
310#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DiagnosticOnUnimplementedOnlyForTraits 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 {
                    DiagnosticOnUnimplementedOnlyForTraits => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::on_unimplemented]` can only be applied to trait definitions")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
311#[diag("`#[diagnostic::on_unimplemented]` can only be applied to trait definitions")]
312pub(crate) struct DiagnosticOnUnimplementedOnlyForTraits;
313
314#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DiagnosticOnUnknownOnlyForImports 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 {
                    DiagnosticOnUnknownOnlyForImports { target_span: __binding_0
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::on_unknown]` can only be applied to `use` statements")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("not an import")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
315#[diag("`#[diagnostic::on_unknown]` can only be applied to `use` statements")]
316pub(crate) struct DiagnosticOnUnknownOnlyForImports {
317    #[label("not an import")]
318    pub target_span: Span,
319}
320
321#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DiagnosticOnUnmatchArgsOnlyForMacros 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 {
                    DiagnosticOnUnmatchArgsOnlyForMacros => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::on_unmatch_args]` can only be applied to macro definitions")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
322#[diag("`#[diagnostic::on_unmatch_args]` can only be applied to macro definitions")]
323pub(crate) struct DiagnosticOnUnmatchArgsOnlyForMacros;
324
325#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectDoNotRecommendLocation 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 {
                    IncorrectDoNotRecommendLocation { target_span: __binding_0 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`#[diagnostic::do_not_recommend]` can only be placed on trait implementations")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("not a trait implementation")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
326#[diag("`#[diagnostic::do_not_recommend]` can only be placed on trait implementations")]
327pub(crate) struct IncorrectDoNotRecommendLocation {
328    #[label("not a trait implementation")]
329    pub target_span: Span,
330}
331
332#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for MalformedDoc
            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 {
                    MalformedDoc => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("malformed `doc` attribute input")));
                        diag.warn(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
333#[diag("malformed `doc` attribute input")]
334#[warning(
335    "this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!"
336)]
337pub(crate) struct MalformedDoc;
338
339#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ExpectedNoArgs
            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 {
                    ExpectedNoArgs => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("didn't expect any arguments here")));
                        diag.warn(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
340#[diag("didn't expect any arguments here")]
341#[warning(
342    "this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!"
343)]
344pub(crate) struct ExpectedNoArgs;
345
346#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedNameValue 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 {
                    ExpectedNameValue => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected this to be of the form `... = \"...\"`")));
                        diag.warn(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
347#[diag("expected this to be of the form `... = \"...\"`")]
348#[warning(
349    "this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!"
350)]
351pub(crate) struct ExpectedNameValue;
352
353#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MalFormedDiagnosticAttributeLint 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 {
                    MalFormedDiagnosticAttributeLint {
                        attribute: __binding_0,
                        options: __binding_1,
                        span: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("malformed `{$attribute}` attribute")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$options}")));
                        ;
                        diag.arg("attribute", __binding_0);
                        diag.arg("options", __binding_1);
                        diag.span_label(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid option found here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
354#[diag("malformed `{$attribute}` attribute")]
355#[help("{$options}")]
356pub(crate) struct MalFormedDiagnosticAttributeLint {
357    pub attribute: &'static str,
358    pub options: &'static str,
359    #[label("invalid option found here")]
360    pub span: Span,
361}
362
363#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            WrappedParserError 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 {
                    WrappedParserError {
                        description: __binding_0,
                        span: __binding_1,
                        label: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$description}")));
                        ;
                        diag.arg("description", __binding_0);
                        diag.arg("label", __binding_2);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$label}")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
364#[diag("{$description}")]
365pub(crate) struct WrappedParserError {
366    pub description: String,
367    #[label("{$label}")]
368    pub span: Span,
369    pub label: String,
370}
371
372#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IgnoredDiagnosticOption 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 {
                    IgnoredDiagnosticOption {
                        option_name: __binding_0,
                        first_span: __binding_1,
                        later_span: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$option_name}` is ignored due to previous definition of `{$option_name}`")));
                        ;
                        diag.arg("option_name", __binding_0);
                        diag.span_label(__binding_1,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$option_name}` is first declared here")));
                        diag.span_label(__binding_2,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$option_name}` is later redundantly declared here")));
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
373#[diag("`{$option_name}` is ignored due to previous definition of `{$option_name}`")]
374pub(crate) struct IgnoredDiagnosticOption {
375    pub option_name: Symbol,
376    #[label("`{$option_name}` is first declared here")]
377    pub first_span: Span,
378    #[label("`{$option_name}` is later redundantly declared here")]
379    pub later_span: Span,
380}
381
382#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingOptionsForDiagnosticAttribute 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 {
                    MissingOptionsForDiagnosticAttribute {
                        attribute: __binding_0, options: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("missing options for `{$attribute}` attribute")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$options}")));
                        ;
                        diag.arg("attribute", __binding_0);
                        diag.arg("options", __binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
383#[diag("missing options for `{$attribute}` attribute")]
384#[help("{$options}")]
385pub(crate) struct MissingOptionsForDiagnosticAttribute {
386    pub attribute: &'static str,
387    pub options: &'static str,
388}
389
390#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NonMetaItemDiagnosticAttribute 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 {
                    NonMetaItemDiagnosticAttribute => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected a literal or missing delimiter")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only literals are allowed as values for the `message`, `note` and `label` options. These options must be separated by a comma")));
                        ;
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
391#[diag("expected a literal or missing delimiter")]
392#[help(
393    "only literals are allowed as values for the `message`, `note` and `label` options. These options must be separated by a comma"
394)]
395pub(crate) struct NonMetaItemDiagnosticAttribute;
396
397#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for FormatWarning
            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 {
                    FormatWarning::PositionalArgument { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("positional arguments are not permitted in diagnostic attributes")));
                        diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("you can print empty braces by escaping them")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this format argument")));
                        diag
                    }
                    FormatWarning::IndexedArgument { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("indexed format arguments are not permitted in diagnostic attributes")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this format argument")));
                        diag
                    }
                    FormatWarning::InvalidSpecifier { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("format specifiers are not permitted in diagnostic attributes")));
                        ;
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this format specifier")));
                        diag
                    }
                    FormatWarning::DisallowedPlaceholder {
                        span: __binding_0, attr: __binding_1, allowed: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this format argument is not allowed in `#[{$attr}]`")));
                        diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("{$allowed}")));
                        ;
                        diag.arg("attr", __binding_1);
                        diag.arg("allowed", __binding_2);
                        diag.span_label(__binding_0,
                            rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this format argument")));
                        diag
                    }
                }
            }
        }
    };Diagnostic, #[automatically_derived]
impl ::core::clone::Clone for FormatWarning {
    #[inline]
    fn clone(&self) -> FormatWarning {
        let _: ::core::clone::AssertParamIsClone<Span>;
        let _: ::core::clone::AssertParamIsClone<&'static str>;
        let _: ::core::clone::AssertParamIsClone<&'static str>;
        *self
    }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for FormatWarning { }Copy)]
398pub(crate) enum FormatWarning {
399    #[diag("positional arguments are not permitted in diagnostic attributes")]
400    #[help("you can print empty braces by escaping them")]
401    PositionalArgument {
402        #[label("remove this format argument")]
403        span: Span,
404    },
405
406    #[diag("indexed format arguments are not permitted in diagnostic attributes")]
407    IndexedArgument {
408        #[label("remove this format argument")]
409        span: Span,
410    },
411
412    #[diag("format specifiers are not permitted in diagnostic attributes")]
413    InvalidSpecifier {
414        #[label("remove this format specifier")]
415        span: Span,
416    },
417
418    #[diag("this format argument is not allowed in `#[{$attr}]`")]
419    #[note("{$allowed}")]
420    DisallowedPlaceholder {
421        #[label("remove this format argument")]
422        span: Span,
423        attr: &'static str,
424        allowed: &'static str,
425    },
426}
427
428#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgCargoHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgCargoHelp::LintCfg {
                        cargo_toml_lint_cfg: __binding_0 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("cargo_toml_lint_cfg".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider using a Cargo feature instead")),
                                &sub_args);
                        diag.help(__message);
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:{$cargo_toml_lint_cfg}")),
                                &sub_args);
                        diag.help(__message);
                    }
                    UnexpectedCfgCargoHelp::LintCfgAndBuildRs {
                        cargo_toml_lint_cfg: __binding_0,
                        build_rs_println: __binding_1 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("cargo_toml_lint_cfg".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        sub_args.insert("build_rs_println".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider using a Cargo feature instead")),
                                &sub_args);
                        diag.help(__message);
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:{$cargo_toml_lint_cfg}")),
                                &sub_args);
                        diag.help(__message);
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("or consider adding `{$build_rs_println}` to the top of the `build.rs`")),
                                &sub_args);
                        diag.help(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
429pub(crate) enum UnexpectedCfgCargoHelp {
430    #[help("consider using a Cargo feature instead")]
431    #[help(
432        "or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:{$cargo_toml_lint_cfg}"
433    )]
434    LintCfg { cargo_toml_lint_cfg: String },
435    #[help("consider using a Cargo feature instead")]
436    #[help(
437        "or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:{$cargo_toml_lint_cfg}"
438    )]
439    #[help("or consider adding `{$build_rs_println}` to the top of the `build.rs`")]
440    LintCfgAndBuildRs { cargo_toml_lint_cfg: String, build_rs_println: String },
441}
442
443impl UnexpectedCfgCargoHelp {
444    fn cargo_toml_lint_cfg(unescaped: &str) -> String {
445        ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("\n [lints.rust]\n unexpected_cfgs = {{ level = \"warn\", check-cfg = [\'{0}\'] }}",
                unescaped))
    })format!(
446            "\n [lints.rust]\n unexpected_cfgs = {{ level = \"warn\", check-cfg = ['{unescaped}'] }}"
447        )
448    }
449
450    pub(crate) fn lint_cfg(unescaped: &str) -> Self {
451        UnexpectedCfgCargoHelp::LintCfg {
452            cargo_toml_lint_cfg: Self::cargo_toml_lint_cfg(unescaped),
453        }
454    }
455
456    pub(crate) fn lint_cfg_and_build_rs(unescaped: &str, escaped: &str) -> Self {
457        UnexpectedCfgCargoHelp::LintCfgAndBuildRs {
458            cargo_toml_lint_cfg: Self::cargo_toml_lint_cfg(unescaped),
459            build_rs_println: ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("println!(\"cargo::rustc-check-cfg={0}\");",
                escaped))
    })format!("println!(\"cargo::rustc-check-cfg={escaped}\");"),
460        }
461    }
462}
463
464#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgRustcHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgRustcHelp { cmdline_arg: __binding_0 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("cmdline_arg".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("to expect this configuration use `{$cmdline_arg}`")),
                                &sub_args);
                        diag.help(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
465#[help("to expect this configuration use `{$cmdline_arg}`")]
466pub(crate) struct UnexpectedCfgRustcHelp {
467    pub cmdline_arg: String,
468}
469
470impl UnexpectedCfgRustcHelp {
471    pub(crate) fn new(unescaped: &str) -> Self {
472        Self { cmdline_arg: ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("--check-cfg={0}", unescaped))
    })format!("--check-cfg={unescaped}") }
473    }
474}
475
476#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgRustcMacroHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgRustcMacroHelp {
                        macro_kind: __binding_0, macro_name: __binding_1 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("macro_kind".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        sub_args.insert("macro_name".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("using a cfg inside a {$macro_kind} will use the cfgs from the destination crate and not the ones from the defining crate")),
                                &sub_args);
                        diag.note(__message);
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try referring to `{$macro_name}` crate for guidance on how handle this unexpected cfg")),
                                &sub_args);
                        diag.help(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
477#[note(
478    "using a cfg inside a {$macro_kind} will use the cfgs from the destination crate and not the ones from the defining crate"
479)]
480#[help("try referring to `{$macro_name}` crate for guidance on how handle this unexpected cfg")]
481pub(crate) struct UnexpectedCfgRustcMacroHelp {
482    pub macro_kind: &'static str,
483    pub macro_name: Symbol,
484}
485
486#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedCfgCargoMacroHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedCfgCargoMacroHelp {
                        macro_kind: __binding_0, macro_name: __binding_1 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("macro_kind".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        sub_args.insert("macro_name".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("using a cfg inside a {$macro_kind} will use the cfgs from the destination crate and not the ones from the defining crate")),
                                &sub_args);
                        diag.note(__message);
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try referring to `{$macro_name}` crate for guidance on how handle this unexpected cfg")),
                                &sub_args);
                        diag.help(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
487#[note(
488    "using a cfg inside a {$macro_kind} will use the cfgs from the destination crate and not the ones from the defining crate"
489)]
490#[help("try referring to `{$macro_name}` crate for guidance on how handle this unexpected cfg")]
491pub(crate) struct UnexpectedCfgCargoMacroHelp {
492    pub macro_kind: &'static str,
493    pub macro_name: Symbol,
494}
495
496#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedCfgName 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 {
                    UnexpectedCfgName {
                        code_sugg: __binding_0,
                        invocation_help: __binding_1,
                        name: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unexpected `cfg` condition name: `{$name}`")));
                        ;
                        diag.arg("name", __binding_2);
                        diag.subdiagnostic(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
497#[diag("unexpected `cfg` condition name: `{$name}`")]
498pub(crate) struct UnexpectedCfgName {
499    #[subdiagnostic]
500    pub code_sugg: unexpected_cfg_name::CodeSuggestion,
501    #[subdiagnostic]
502    pub invocation_help: unexpected_cfg_name::InvocationHelp,
503
504    pub name: Symbol,
505}
506
507pub(crate) mod unexpected_cfg_name {
508    use rustc_errors::DiagSymbolList;
509    use rustc_macros::Subdiagnostic;
510    use rustc_span::{Ident, Span, Symbol};
511
512    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for CodeSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    CodeSuggestion::DefineFeatures => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider defining some features in `Cargo.toml`")),
                                &sub_args);
                        diag.help(__message);
                    }
                    CodeSuggestion::VersionSyntax {
                        between_name_and_value: __binding_0,
                        after_value: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_6 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_7 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_6));
                        suggestions.push((__binding_1, __code_7));
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a similar config predicate: `version(\"..\")`")),
                                &sub_args);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                    CodeSuggestion::SimilarNameAndValue {
                        span: __binding_0, code: __binding_1 } => {
                        let __code_8 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("code".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a config with a similar name and value")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_8, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                    CodeSuggestion::SimilarNameNoValue {
                        span: __binding_0, code: __binding_1 } => {
                        let __code_9 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("code".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a config with a similar name and no value")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_9, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                    CodeSuggestion::SimilarNameDifferentValues {
                        span: __binding_0, code: __binding_1, expected: __binding_2
                        } => {
                        let __code_10 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        if let Some(__binding_2) = __binding_2 {
                            __binding_2.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("code".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a config with a similar name and different values")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_10, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                    CodeSuggestion::SimilarName {
                        span: __binding_0, code: __binding_1, expected: __binding_2
                        } => {
                        let __code_11 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        if let Some(__binding_2) = __binding_2 {
                            __binding_2.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("code".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a config with a similar name")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_11, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                    CodeSuggestion::SimilarValues {
                        with_similar_values: __binding_0,
                        expected_names: __binding_1 } => {
                        for __binding_0 in __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                    }
                    CodeSuggestion::BooleanLiteral {
                        span: __binding_0, literal: __binding_1 } => {
                        let __code_12 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("literal".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("you may have meant to use `{$literal}` (notice the capitalization). Doing so makes this predicate evaluate to `{$literal}` unconditionally")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_12, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                    }
                }
            }
        }
    };Subdiagnostic)]
513    pub(crate) enum CodeSuggestion {
514        #[help("consider defining some features in `Cargo.toml`")]
515        DefineFeatures,
516        #[multipart_suggestion(
517            "there is a similar config predicate: `version(\"..\")`",
518            applicability = "machine-applicable"
519        )]
520        VersionSyntax {
521            #[suggestion_part(code = "(")]
522            between_name_and_value: Span,
523            #[suggestion_part(code = ")")]
524            after_value: Span,
525        },
526        #[suggestion(
527            "there is a config with a similar name and value",
528            applicability = "maybe-incorrect",
529            code = "{code}"
530        )]
531        SimilarNameAndValue {
532            #[primary_span]
533            span: Span,
534            code: String,
535        },
536        #[suggestion(
537            "there is a config with a similar name and no value",
538            applicability = "maybe-incorrect",
539            code = "{code}"
540        )]
541        SimilarNameNoValue {
542            #[primary_span]
543            span: Span,
544            code: String,
545        },
546        #[suggestion(
547            "there is a config with a similar name and different values",
548            applicability = "maybe-incorrect",
549            code = "{code}"
550        )]
551        SimilarNameDifferentValues {
552            #[primary_span]
553            span: Span,
554            code: String,
555            #[subdiagnostic]
556            expected: Option<ExpectedValues>,
557        },
558        #[suggestion(
559            "there is a config with a similar name",
560            applicability = "maybe-incorrect",
561            code = "{code}"
562        )]
563        SimilarName {
564            #[primary_span]
565            span: Span,
566            code: String,
567            #[subdiagnostic]
568            expected: Option<ExpectedValues>,
569        },
570        SimilarValues {
571            #[subdiagnostic]
572            with_similar_values: Vec<FoundWithSimilarValue>,
573            #[subdiagnostic]
574            expected_names: Option<ExpectedNames>,
575        },
576        #[suggestion(
577            "you may have meant to use `{$literal}` (notice the capitalization). Doing so makes this predicate evaluate to `{$literal}` unconditionally",
578            applicability = "machine-applicable",
579            style = "verbose",
580            code = "{literal}"
581        )]
582        BooleanLiteral {
583            #[primary_span]
584            span: Span,
585            literal: bool,
586        },
587    }
588
589    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedValues {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedValues {
                        best_match: __binding_0, possibilities: __binding_1 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("best_match".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        sub_args.insert("possibilities".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected values for `{$best_match}` are: {$possibilities}")),
                                &sub_args);
                        diag.help(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
590    #[help("expected values for `{$best_match}` are: {$possibilities}")]
591    pub(crate) struct ExpectedValues {
592        pub best_match: Symbol,
593        pub possibilities: DiagSymbolList,
594    }
595
596    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for FoundWithSimilarValue {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FoundWithSimilarValue { span: __binding_0, code: __binding_1
                        } => {
                        let __code_13 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("code".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("found config with similar value")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_13, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                }
            }
        }
    };Subdiagnostic)]
597    #[suggestion(
598        "found config with similar value",
599        applicability = "maybe-incorrect",
600        code = "{code}"
601    )]
602    pub(crate) struct FoundWithSimilarValue {
603        #[primary_span]
604        pub span: Span,
605        pub code: String,
606    }
607
608    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedNames {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedNames {
                        possibilities: __binding_0, and_more: __binding_1 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("possibilities".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        sub_args.insert("and_more".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected names are: {$possibilities}{$and_more ->\n            [0] {\"\"}\n            *[other] {\" \"}and {$and_more} more\n        }")),
                                &sub_args);
                        diag.help_once(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
609    #[help_once(
610        "expected names are: {$possibilities}{$and_more ->
611            [0] {\"\"}
612            *[other] {\" \"}and {$and_more} more
613        }"
614    )]
615    pub(crate) struct ExpectedNames {
616        pub possibilities: DiagSymbolList<Ident>,
617        pub and_more: usize,
618    }
619
620    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvocationHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvocationHelp::Cargo {
                        macro_help: __binding_0, help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration")),
                                &sub_args);
                        diag.note(__message);
                    }
                    InvocationHelp::Rustc {
                        macro_help: __binding_0, help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        __binding_1.add_to_diag(diag);
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration")),
                                &sub_args);
                        diag.note(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
621    pub(crate) enum InvocationHelp {
622        #[note(
623            "see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration"
624        )]
625        Cargo {
626            #[subdiagnostic]
627            macro_help: Option<super::UnexpectedCfgCargoMacroHelp>,
628            #[subdiagnostic]
629            help: Option<super::UnexpectedCfgCargoHelp>,
630        },
631        #[note(
632            "see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration"
633        )]
634        Rustc {
635            #[subdiagnostic]
636            macro_help: Option<super::UnexpectedCfgRustcMacroHelp>,
637            #[subdiagnostic]
638            help: super::UnexpectedCfgRustcHelp,
639        },
640    }
641}
642
643#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedCfgValue 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 {
                    UnexpectedCfgValue {
                        code_sugg: __binding_0,
                        invocation_help: __binding_1,
                        has_value: __binding_2,
                        value: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unexpected `cfg` condition value: {$has_value ->\n        [true] `{$value}`\n        *[false] (none)\n    }")));
                        ;
                        diag.arg("has_value", __binding_2);
                        diag.arg("value", __binding_3);
                        diag.subdiagnostic(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
644#[diag(
645    "unexpected `cfg` condition value: {$has_value ->
646        [true] `{$value}`
647        *[false] (none)
648    }"
649)]
650pub(crate) struct UnexpectedCfgValue {
651    #[subdiagnostic]
652    pub code_sugg: unexpected_cfg_value::CodeSuggestion,
653    #[subdiagnostic]
654    pub invocation_help: unexpected_cfg_value::InvocationHelp,
655
656    pub has_value: bool,
657    pub value: String,
658}
659
660pub(crate) mod unexpected_cfg_value {
661    use rustc_errors::DiagSymbolList;
662    use rustc_macros::Subdiagnostic;
663    use rustc_span::{Span, Symbol};
664
665    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for CodeSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    CodeSuggestion::ChangeValue {
                        expected_values: __binding_0, suggestion: __binding_1 } => {
                        __binding_0.add_to_diag(diag);
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                    }
                    CodeSuggestion::RemoveValue {
                        suggestion: __binding_0, name: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("name".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("no expected value for `{$name}`")),
                                &sub_args);
                        diag.note(__message);
                    }
                    CodeSuggestion::RemoveCondition {
                        suggestion: __binding_0, name: __binding_1 } => {
                        __binding_0.add_to_diag(diag);
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("name".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("no expected values for `{$name}`")),
                                &sub_args);
                        diag.note(__message);
                    }
                    CodeSuggestion::ChangeName { suggestions: __binding_0 } => {
                        for __binding_0 in __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                    }
                }
            }
        }
    };Subdiagnostic)]
666    pub(crate) enum CodeSuggestion {
667        ChangeValue {
668            #[subdiagnostic]
669            expected_values: ExpectedValues,
670            #[subdiagnostic]
671            suggestion: Option<ChangeValueSuggestion>,
672        },
673        #[note("no expected value for `{$name}`")]
674        RemoveValue {
675            #[subdiagnostic]
676            suggestion: Option<RemoveValueSuggestion>,
677
678            name: Symbol,
679        },
680        #[note("no expected values for `{$name}`")]
681        RemoveCondition {
682            #[subdiagnostic]
683            suggestion: RemoveConditionSuggestion,
684
685            name: Symbol,
686        },
687        ChangeName {
688            #[subdiagnostic]
689            suggestions: Vec<ChangeNameSuggestion>,
690        },
691    }
692
693    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ChangeValueSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ChangeValueSuggestion::SimilarName {
                        span: __binding_0, best_match: __binding_1 } => {
                        let __code_14 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\"{0}\"", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("best_match".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there is a expected value with a similar name")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_14, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                    ChangeValueSuggestion::SpecifyValue {
                        span: __binding_0, first_possibility: __binding_1 } => {
                        let __code_15 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" = \"{0}\"",
                                                        __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("first_possibility".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("specify a config value")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_15, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                }
            }
        }
    };Subdiagnostic)]
694    pub(crate) enum ChangeValueSuggestion {
695        #[suggestion(
696            "there is a expected value with a similar name",
697            code = r#""{best_match}""#,
698            applicability = "maybe-incorrect"
699        )]
700        SimilarName {
701            #[primary_span]
702            span: Span,
703            best_match: Symbol,
704        },
705        #[suggestion(
706            "specify a config value",
707            code = r#" = "{first_possibility}""#,
708            applicability = "maybe-incorrect"
709        )]
710        SpecifyValue {
711            #[primary_span]
712            span: Span,
713            first_possibility: Symbol,
714        },
715    }
716
717    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for RemoveValueSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RemoveValueSuggestion { span: __binding_0 } => {
                        let __code_16 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the value")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_16, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                }
            }
        }
    };Subdiagnostic)]
718    #[suggestion("remove the value", code = "", applicability = "maybe-incorrect")]
719    pub(crate) struct RemoveValueSuggestion {
720        #[primary_span]
721        pub span: Span,
722    }
723
724    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for RemoveConditionSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    RemoveConditionSuggestion { span: __binding_0 } => {
                        let __code_17 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the condition")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_17, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                    }
                }
            }
        }
    };Subdiagnostic)]
725    #[suggestion("remove the condition", code = "", applicability = "maybe-incorrect")]
726    pub(crate) struct RemoveConditionSuggestion {
727        #[primary_span]
728        pub span: Span,
729    }
730
731    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedValues {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedValues {
                        name: __binding_0,
                        have_none_possibility: __binding_1,
                        possibilities: __binding_2,
                        and_more: __binding_3 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("name".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        sub_args.insert("have_none_possibility".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        sub_args.insert("possibilities".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_2,
                                &mut diag.long_ty_path));
                        sub_args.insert("and_more".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_3,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("expected values for `{$name}` are: {$have_none_possibility ->\n            [true] {\"(none), \"}\n            *[false] {\"\"}\n        }{$possibilities}{$and_more ->\n            [0] {\"\"}\n            *[other] {\" \"}and {$and_more} more\n        }")),
                                &sub_args);
                        diag.note(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
732    #[note(
733        "expected values for `{$name}` are: {$have_none_possibility ->
734            [true] {\"(none), \"}
735            *[false] {\"\"}
736        }{$possibilities}{$and_more ->
737            [0] {\"\"}
738            *[other] {\" \"}and {$and_more} more
739        }"
740    )]
741    pub(crate) struct ExpectedValues {
742        pub name: Symbol,
743        pub have_none_possibility: bool,
744        pub possibilities: DiagSymbolList,
745        pub and_more: usize,
746    }
747
748    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ChangeNameSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ChangeNameSuggestion {
                        span: __binding_0, name: __binding_1, value: __binding_2 }
                        => {
                        let __code_18 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("name".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
                                &mut diag.long_ty_path));
                        sub_args.insert("value".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_2,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$value}` is an expected value for `{$name}`")),
                                &sub_args);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_18, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                    }
                }
            }
        }
    };Subdiagnostic)]
749    #[suggestion(
750        "`{$value}` is an expected value for `{$name}`",
751        code = "{name}",
752        applicability = "maybe-incorrect",
753        style = "verbose"
754    )]
755    pub(crate) struct ChangeNameSuggestion {
756        #[primary_span]
757        pub span: Span,
758        pub name: Symbol,
759        pub value: Symbol,
760    }
761
762    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvocationHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvocationHelp::Cargo {
                        help: __binding_0, macro_help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration")),
                                &sub_args);
                        diag.note(__message);
                    }
                    InvocationHelp::Rustc {
                        help: __binding_0, macro_help: __binding_1 } => {
                        if let Some(__binding_0) = __binding_0 {
                            __binding_0.add_to_diag(diag);
                        }
                        if let Some(__binding_1) = __binding_1 {
                            __binding_1.add_to_diag(diag);
                        }
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration")),
                                &sub_args);
                        diag.note(__message);
                    }
                }
            }
        }
    };Subdiagnostic)]
763    pub(crate) enum InvocationHelp {
764        #[note(
765            "see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration"
766        )]
767        Cargo {
768            #[subdiagnostic]
769            help: Option<CargoHelp>,
770            #[subdiagnostic]
771            macro_help: Option<super::UnexpectedCfgCargoMacroHelp>,
772        },
773        #[note(
774            "see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration"
775        )]
776        Rustc {
777            #[subdiagnostic]
778            help: Option<super::UnexpectedCfgRustcHelp>,
779            #[subdiagnostic]
780            macro_help: Option<super::UnexpectedCfgRustcMacroHelp>,
781        },
782    }
783
784    #[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for CargoHelp {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    CargoHelp::AddFeature { value: __binding_0 } => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        sub_args.insert("value".into(),
                            rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
                                &mut diag.long_ty_path));
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider adding `{$value}` as a feature in `Cargo.toml`")),
                                &sub_args);
                        diag.help(__message);
                    }
                    CargoHelp::DefineFeatures => {
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                        let __message =
                            rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider defining some features in `Cargo.toml`")),
                                &sub_args);
                        diag.help(__message);
                    }
                    CargoHelp::Other(__binding_0) => {
                        __binding_0.add_to_diag(diag);
                        let mut sub_args = rustc_errors::DiagArgMap::default();
                    }
                }
            }
        }
    };Subdiagnostic)]
785    pub(crate) enum CargoHelp {
786        #[help("consider adding `{$value}` as a feature in `Cargo.toml`")]
787        AddFeature {
788            value: Symbol,
789        },
790        #[help("consider defining some features in `Cargo.toml`")]
791        DefineFeatures,
792        Other(#[subdiagnostic] super::UnexpectedCfgCargoHelp),
793    }
794}