Skip to main content

rustc_parse/
errors.rs

1// ignore-tidy-filelength
2
3use std::borrow::Cow;
4use std::path::PathBuf;
5
6use rustc_ast::token::Token;
7use rustc_ast::util::parser::ExprPrecedence;
8use rustc_ast::{Path, Visibility};
9use rustc_errors::codes::*;
10use rustc_errors::{
11    Applicability, Diag, DiagArgValue, DiagCtxtHandle, Diagnostic, EmissionGuarantee, IntoDiagArg,
12    Level, Subdiagnostic, SuggestionStyle,
13};
14use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic};
15use rustc_session::errors::ExprParenthesesNeeded;
16use rustc_span::edition::{Edition, LATEST_STABLE_EDITION};
17use rustc_span::{Ident, Span, Symbol};
18
19use crate::fluent_generated as fluent;
20use crate::parser::{ForbiddenLetReason, TokenDescription};
21
22#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AmbiguousPlus
            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 {
                    AmbiguousPlus { span: __binding_0, suggestion: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_maybe_report_ambiguous_plus);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
23#[diag(parse_maybe_report_ambiguous_plus)]
24pub(crate) struct AmbiguousPlus {
25    #[primary_span]
26    pub span: Span,
27    #[subdiagnostic]
28    pub suggestion: AddParen,
29}
30
31#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for BadTypePlus
            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 {
                    BadTypePlus { span: __binding_0, sub: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_maybe_recover_from_bad_type_plus);
                        diag.code(E0178);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
32#[diag(parse_maybe_recover_from_bad_type_plus, code = E0178)]
33pub(crate) struct BadTypePlus {
34    #[primary_span]
35    pub span: Span,
36    #[subdiagnostic]
37    pub sub: BadTypePlusSub,
38}
39
40#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for AddParen {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AddParen { lo: __binding_0, hi: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_1 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_2 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_1));
                        suggestions.push((__binding_1, __code_2));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_add_paren);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
41#[multipart_suggestion(parse_add_paren, applicability = "machine-applicable")]
42pub(crate) struct AddParen {
43    #[suggestion_part(code = "(")]
44    pub lo: Span,
45    #[suggestion_part(code = ")")]
46    pub hi: Span,
47}
48
49#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BadTypePlusSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BadTypePlusSub::AddParen { suggestion: __binding_0 } => {
                        __binding_0.add_to_diag(diag);
                        diag.store_args();
                        diag.restore_args();
                    }
                    BadTypePlusSub::ForgotParen { span: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_forgot_paren);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    BadTypePlusSub::ExpectPath { span: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expect_path);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
50pub(crate) enum BadTypePlusSub {
51    AddParen {
52        #[subdiagnostic]
53        suggestion: AddParen,
54    },
55    #[label(parse_forgot_paren)]
56    ForgotParen {
57        #[primary_span]
58        span: Span,
59    },
60    #[label(parse_expect_path)]
61    ExpectPath {
62        #[primary_span]
63        span: Span,
64    },
65}
66
67#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for BadQPathStage2
            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 {
                    BadQPathStage2 { span: __binding_0, wrap: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_maybe_recover_from_bad_qpath_stage_2);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
68#[diag(parse_maybe_recover_from_bad_qpath_stage_2)]
69pub(crate) struct BadQPathStage2 {
70    #[primary_span]
71    pub span: Span,
72    #[subdiagnostic]
73    pub wrap: WrapType,
74}
75
76#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TraitImplModifierInInherentImpl 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 {
                    TraitImplModifierInInherentImpl {
                        span: __binding_0,
                        modifier: __binding_1,
                        modifier_name: __binding_2,
                        modifier_span: __binding_3,
                        self_ty: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_trait_impl_modifier_in_inherent_impl);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("modifier", __binding_1);
                        diag.arg("modifier_name", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::parse_because);
                        diag.span_label(__binding_4,
                            crate::fluent_generated::parse_type);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
77#[diag(parse_trait_impl_modifier_in_inherent_impl)]
78#[note]
79pub(crate) struct TraitImplModifierInInherentImpl {
80    #[primary_span]
81    pub span: Span,
82    pub modifier: &'static str,
83    pub modifier_name: &'static str,
84    #[label(parse_because)]
85    pub modifier_span: Span,
86    #[label(parse_type)]
87    pub self_ty: Span,
88}
89
90#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for WrapType {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    WrapType { lo: __binding_0, hi: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_3 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("<"))
                                });
                        let __code_4 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(">"))
                                });
                        suggestions.push((__binding_0, __code_3));
                        suggestions.push((__binding_1, __code_4));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
91#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
92pub(crate) struct WrapType {
93    #[suggestion_part(code = "<")]
94    pub lo: Span,
95    #[suggestion_part(code = ">")]
96    pub hi: Span,
97}
98
99#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectSemicolon<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    IncorrectSemicolon {
                        span: __binding_0, show_help: __binding_1, name: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_semicolon);
                        let __code_5 =
                            [::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_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_5,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        if __binding_1 {
                            diag.help(crate::fluent_generated::_subdiag::help);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
100#[diag(parse_incorrect_semicolon)]
101pub(crate) struct IncorrectSemicolon<'a> {
102    #[primary_span]
103    #[suggestion(style = "verbose", code = "", applicability = "machine-applicable")]
104    pub span: Span,
105    #[help]
106    pub show_help: bool,
107    pub name: &'a str,
108}
109
110#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectUseOfAwait 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 {
                    IncorrectUseOfAwait { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_use_of_await);
                        let __code_6 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_parentheses_suggestion,
                            __code_6, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
111#[diag(parse_incorrect_use_of_await)]
112pub(crate) struct IncorrectUseOfAwait {
113    #[primary_span]
114    #[suggestion(
115        parse_parentheses_suggestion,
116        style = "verbose",
117        code = "",
118        applicability = "machine-applicable"
119    )]
120    pub span: Span,
121}
122
123#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectUseOfUse 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 {
                    IncorrectUseOfUse { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_use_of_use);
                        let __code_7 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_parentheses_suggestion,
                            __code_7, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
124#[diag(parse_incorrect_use_of_use)]
125pub(crate) struct IncorrectUseOfUse {
126    #[primary_span]
127    #[suggestion(
128        parse_parentheses_suggestion,
129        style = "verbose",
130        code = "",
131        applicability = "machine-applicable"
132    )]
133    pub span: Span,
134}
135
136#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for AwaitSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AwaitSuggestion {
                        removal: __binding_0,
                        dot_await: __binding_1,
                        question_mark: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_8 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_9 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(".await{0}", __binding_2))
                                });
                        suggestions.push((__binding_0, __code_8));
                        suggestions.push((__binding_1, __code_9));
                        diag.store_args();
                        diag.arg("question_mark", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_incorrect_use_of_await_postfix_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
137#[multipart_suggestion(
138    parse_incorrect_use_of_await_postfix_suggestion,
139    applicability = "machine-applicable"
140)]
141pub(crate) struct AwaitSuggestion {
142    #[suggestion_part(code = "")]
143    pub removal: Span,
144    #[suggestion_part(code = ".await{question_mark}")]
145    pub dot_await: Span,
146    pub question_mark: &'static str,
147}
148
149#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for IncorrectAwait
            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 {
                    IncorrectAwait { span: __binding_0, suggestion: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_use_of_await);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
150#[diag(parse_incorrect_use_of_await)]
151pub(crate) struct IncorrectAwait {
152    #[primary_span]
153    pub span: Span,
154    #[subdiagnostic]
155    pub suggestion: AwaitSuggestion,
156}
157
158#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for InInTypo 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 {
                    InInTypo { span: __binding_0, sugg_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_in_in_typo);
                        let __code_10 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_10,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
159#[diag(parse_in_in_typo)]
160pub(crate) struct InInTypo {
161    #[primary_span]
162    pub span: Span,
163    #[suggestion(code = "", style = "verbose", applicability = "machine-applicable")]
164    pub sugg_span: Span,
165}
166
167#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidVariableDeclaration 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 {
                    InvalidVariableDeclaration {
                        span: __binding_0, sub: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_variable_declaration);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
168#[diag(parse_invalid_variable_declaration)]
169pub(crate) struct InvalidVariableDeclaration {
170    #[primary_span]
171    pub span: Span,
172    #[subdiagnostic]
173    pub sub: InvalidVariableDeclarationSub,
174}
175
176#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidVariableDeclarationSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidVariableDeclarationSub::SwitchMutLetOrder(__binding_0)
                        => {
                        let __code_11 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let mut"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_switch_mut_let_order);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_11, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidVariableDeclarationSub::MissingLet(__binding_0) => {
                        let __code_12 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let mut"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_missing_let_before_mut);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_12, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidVariableDeclarationSub::UseLetNotAuto(__binding_0) =>
                        {
                        let __code_13 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_let_not_auto);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_13, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidVariableDeclarationSub::UseLetNotVar(__binding_0) =>
                        {
                        let __code_14 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_let_not_var);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_14, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
177pub(crate) enum InvalidVariableDeclarationSub {
178    #[suggestion(
179        parse_switch_mut_let_order,
180        style = "verbose",
181        applicability = "maybe-incorrect",
182        code = "let mut"
183    )]
184    SwitchMutLetOrder(#[primary_span] Span),
185    #[suggestion(
186        parse_missing_let_before_mut,
187        applicability = "machine-applicable",
188        style = "verbose",
189        code = "let mut"
190    )]
191    MissingLet(#[primary_span] Span),
192    #[suggestion(
193        parse_use_let_not_auto,
194        style = "verbose",
195        applicability = "machine-applicable",
196        code = "let"
197    )]
198    UseLetNotAuto(#[primary_span] Span),
199    #[suggestion(
200        parse_use_let_not_var,
201        style = "verbose",
202        applicability = "machine-applicable",
203        code = "let"
204    )]
205    UseLetNotVar(#[primary_span] Span),
206}
207
208#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            SwitchRefBoxOrder 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 {
                    SwitchRefBoxOrder { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_switch_ref_box_order);
                        let __code_15 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("box ref"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_15,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
209#[diag(parse_switch_ref_box_order)]
210pub(crate) struct SwitchRefBoxOrder {
211    #[primary_span]
212    #[suggestion(applicability = "machine-applicable", style = "verbose", code = "box ref")]
213    pub span: Span,
214}
215
216#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidComparisonOperator 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 {
                    InvalidComparisonOperator {
                        span: __binding_0, invalid: __binding_1, sub: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_comparison_operator);
                        ;
                        diag.arg("invalid", __binding_1);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
217#[diag(parse_invalid_comparison_operator)]
218pub(crate) struct InvalidComparisonOperator {
219    #[primary_span]
220    pub span: Span,
221    pub invalid: String,
222    #[subdiagnostic]
223    pub sub: InvalidComparisonOperatorSub,
224}
225
226#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidComparisonOperatorSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidComparisonOperatorSub::Correctable {
                        span: __binding_0,
                        invalid: __binding_1,
                        correct: __binding_2 } => {
                        let __code_16 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("invalid", __binding_1);
                        diag.arg("correct", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_instead);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_16, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidComparisonOperatorSub::Spaceship(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_spaceship_operator_invalid);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
227pub(crate) enum InvalidComparisonOperatorSub {
228    #[suggestion(
229        parse_use_instead,
230        style = "verbose",
231        applicability = "machine-applicable",
232        code = "{correct}"
233    )]
234    Correctable {
235        #[primary_span]
236        span: Span,
237        invalid: String,
238        correct: String,
239    },
240    #[label(parse_spaceship_operator_invalid)]
241    Spaceship(#[primary_span] Span),
242}
243
244#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidLogicalOperator 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 {
                    InvalidLogicalOperator {
                        span: __binding_0, incorrect: __binding_1, sub: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_logical_operator);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("incorrect", __binding_1);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
245#[diag(parse_invalid_logical_operator)]
246#[note]
247pub(crate) struct InvalidLogicalOperator {
248    #[primary_span]
249    pub span: Span,
250    pub incorrect: String,
251    #[subdiagnostic]
252    pub sub: InvalidLogicalOperatorSub,
253}
254
255#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidLogicalOperatorSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidLogicalOperatorSub::Conjunction(__binding_0) => {
                        let __code_17 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("&&"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_amp_amp_for_conjunction);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_17, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    InvalidLogicalOperatorSub::Disjunction(__binding_0) => {
                        let __code_18 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("||"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_pipe_pipe_for_disjunction);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_18, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
256pub(crate) enum InvalidLogicalOperatorSub {
257    #[suggestion(
258        parse_use_amp_amp_for_conjunction,
259        style = "verbose",
260        applicability = "machine-applicable",
261        code = "&&"
262    )]
263    Conjunction(#[primary_span] Span),
264    #[suggestion(
265        parse_use_pipe_pipe_for_disjunction,
266        style = "verbose",
267        applicability = "machine-applicable",
268        code = "||"
269    )]
270    Disjunction(#[primary_span] Span),
271}
272
273#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TildeAsUnaryOperator 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 {
                    TildeAsUnaryOperator(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_tilde_is_not_unary_operator);
                        let __code_19 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("!"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_19,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
274#[diag(parse_tilde_is_not_unary_operator)]
275pub(crate) struct TildeAsUnaryOperator(
276    #[primary_span]
277    #[suggestion(style = "verbose", applicability = "machine-applicable", code = "!")]
278    pub Span,
279);
280
281#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NotAsNegationOperator 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 {
                    NotAsNegationOperator {
                        negated: __binding_0,
                        negated_desc: __binding_1,
                        sub: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_not);
                        ;
                        diag.arg("negated_desc", __binding_1);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
282#[diag(parse_unexpected_token_after_not)]
283pub(crate) struct NotAsNegationOperator {
284    #[primary_span]
285    pub negated: Span,
286    pub negated_desc: String,
287    #[subdiagnostic]
288    pub sub: NotAsNegationOperatorSub,
289}
290
291#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NotAsNegationOperatorSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NotAsNegationOperatorSub::SuggestNotDefault(__binding_0) =>
                        {
                        let __code_20 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("!"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_token_after_not_default);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_20, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    NotAsNegationOperatorSub::SuggestNotBitwise(__binding_0) =>
                        {
                        let __code_21 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("!"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_token_after_not_bitwise);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_21, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    NotAsNegationOperatorSub::SuggestNotLogical(__binding_0) =>
                        {
                        let __code_22 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("!"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_token_after_not_logical);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_22, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
292pub(crate) enum NotAsNegationOperatorSub {
293    #[suggestion(
294        parse_unexpected_token_after_not_default,
295        style = "verbose",
296        applicability = "machine-applicable",
297        code = "!"
298    )]
299    SuggestNotDefault(#[primary_span] Span),
300
301    #[suggestion(
302        parse_unexpected_token_after_not_bitwise,
303        style = "verbose",
304        applicability = "machine-applicable",
305        code = "!"
306    )]
307    SuggestNotBitwise(#[primary_span] Span),
308
309    #[suggestion(
310        parse_unexpected_token_after_not_logical,
311        style = "verbose",
312        applicability = "machine-applicable",
313        code = "!"
314    )]
315    SuggestNotLogical(#[primary_span] Span),
316}
317
318#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MalformedLoopLabel 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 {
                    MalformedLoopLabel {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_malformed_loop_label);
                        let __code_23 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\'"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_23,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
319#[diag(parse_malformed_loop_label)]
320pub(crate) struct MalformedLoopLabel {
321    #[primary_span]
322    pub span: Span,
323    #[suggestion(applicability = "machine-applicable", code = "'", style = "verbose")]
324    pub suggestion: Span,
325}
326
327#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LifetimeInBorrowExpression 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 {
                    LifetimeInBorrowExpression {
                        span: __binding_0, lifetime_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_lifetime_in_borrow_expression);
                        let __code_24 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_24,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
328#[diag(parse_lifetime_in_borrow_expression)]
329pub(crate) struct LifetimeInBorrowExpression {
330    #[primary_span]
331    pub span: Span,
332    #[suggestion(applicability = "machine-applicable", code = "", style = "verbose")]
333    #[label]
334    pub lifetime_span: Span,
335}
336
337#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FieldExpressionWithGeneric 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 {
                    FieldExpressionWithGeneric(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_field_expression_with_generic);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
338#[diag(parse_field_expression_with_generic)]
339pub(crate) struct FieldExpressionWithGeneric(#[primary_span] pub Span);
340
341#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MacroInvocationWithQualifiedPath 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 {
                    MacroInvocationWithQualifiedPath(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_macro_invocation_with_qualified_path);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
342#[diag(parse_macro_invocation_with_qualified_path)]
343pub(crate) struct MacroInvocationWithQualifiedPath(#[primary_span] pub Span);
344
345#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedTokenAfterLabel 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 {
                    UnexpectedTokenAfterLabel {
                        span: __binding_0,
                        remove_label: __binding_1,
                        enclose_in_block: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_label);
                        let __code_25 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_label);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::parse_suggestion_remove_label,
                                __code_25, rustc_errors::Applicability::Unspecified,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
346#[diag(parse_unexpected_token_after_label)]
347pub(crate) struct UnexpectedTokenAfterLabel {
348    #[primary_span]
349    #[label(parse_unexpected_token_after_label)]
350    pub span: Span,
351    #[suggestion(parse_suggestion_remove_label, style = "verbose", code = "")]
352    pub remove_label: Option<Span>,
353    #[subdiagnostic]
354    pub enclose_in_block: Option<UnexpectedTokenAfterLabelSugg>,
355}
356
357#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedTokenAfterLabelSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedTokenAfterLabelSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_26 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{ "))
                                });
                        let __code_27 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_26));
                        suggestions.push((__binding_1, __code_27));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_enclose_in_block);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
358#[multipart_suggestion(parse_suggestion_enclose_in_block, applicability = "machine-applicable")]
359pub(crate) struct UnexpectedTokenAfterLabelSugg {
360    #[suggestion_part(code = "{{ ")]
361    pub left: Span,
362    #[suggestion_part(code = " }}")]
363    pub right: Span,
364}
365
366#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            RequireColonAfterLabeledExpression 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 {
                    RequireColonAfterLabeledExpression {
                        span: __binding_0,
                        label: __binding_1,
                        label_end: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_require_colon_after_labeled_expression);
                        let __code_28 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(": "))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::_subdiag::suggestion, __code_28,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
367#[diag(parse_require_colon_after_labeled_expression)]
368#[note]
369pub(crate) struct RequireColonAfterLabeledExpression {
370    #[primary_span]
371    pub span: Span,
372    #[label]
373    pub label: Span,
374    #[suggestion(style = "verbose", applicability = "machine-applicable", code = ": ")]
375    pub label_end: Span,
376}
377
378#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DoCatchSyntaxRemoved 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 {
                    DoCatchSyntaxRemoved { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_do_catch_syntax_removed);
                        let __code_29 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("try"))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_29,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
379#[diag(parse_do_catch_syntax_removed)]
380#[note]
381pub(crate) struct DoCatchSyntaxRemoved {
382    #[primary_span]
383    #[suggestion(applicability = "machine-applicable", code = "try", style = "verbose")]
384    pub span: Span,
385}
386
387#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FloatLiteralRequiresIntegerPart 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 {
                    FloatLiteralRequiresIntegerPart {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_float_literal_requires_integer_part);
                        let __code_30 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("0"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_30,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
388#[diag(parse_float_literal_requires_integer_part)]
389pub(crate) struct FloatLiteralRequiresIntegerPart {
390    #[primary_span]
391    pub span: Span,
392    #[suggestion(applicability = "machine-applicable", code = "0", style = "verbose")]
393    pub suggestion: Span,
394}
395
396#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingSemicolonBeforeArray 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 {
                    MissingSemicolonBeforeArray {
                        open_delim: __binding_0, semicolon: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_semicolon_before_array);
                        let __code_31 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(";"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_31,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
397#[diag(parse_missing_semicolon_before_array)]
398pub(crate) struct MissingSemicolonBeforeArray {
399    #[primary_span]
400    pub open_delim: Span,
401    #[suggestion(style = "verbose", applicability = "maybe-incorrect", code = ";")]
402    pub semicolon: Span,
403}
404
405#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for MissingDotDot
            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 {
                    MissingDotDot {
                        token_span: __binding_0, sugg_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expect_dotdot_not_dotdotdot);
                        let __code_32 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(".."))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_32,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
406#[diag(parse_expect_dotdot_not_dotdotdot)]
407pub(crate) struct MissingDotDot {
408    #[primary_span]
409    pub token_span: Span,
410    #[suggestion(applicability = "maybe-incorrect", code = "..", style = "verbose")]
411    pub sugg_span: Span,
412}
413
414#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidBlockMacroSegment 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 {
                    InvalidBlockMacroSegment {
                        span: __binding_0, context: __binding_1, wrap: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_block_macro_segment);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
415#[diag(parse_invalid_block_macro_segment)]
416pub(crate) struct InvalidBlockMacroSegment {
417    #[primary_span]
418    pub span: Span,
419    #[label]
420    pub context: Span,
421    #[subdiagnostic]
422    pub wrap: WrapInExplicitBlock,
423}
424
425#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for WrapInExplicitBlock {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    WrapInExplicitBlock { lo: __binding_0, hi: __binding_1 } =>
                        {
                        let mut suggestions = Vec::new();
                        let __code_33 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{ "))
                                });
                        let __code_34 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_33));
                        suggestions.push((__binding_1, __code_34));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
426#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
427pub(crate) struct WrapInExplicitBlock {
428    #[suggestion_part(code = "{{ ")]
429    pub lo: Span,
430    #[suggestion_part(code = " }}")]
431    pub hi: Span,
432}
433
434#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IfExpressionMissingThenBlock 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 {
                    IfExpressionMissingThenBlock {
                        if_span: __binding_0,
                        missing_then_block_sub: __binding_1,
                        let_else_sub: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_if_expression_missing_then_block);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
435#[diag(parse_if_expression_missing_then_block)]
436pub(crate) struct IfExpressionMissingThenBlock {
437    #[primary_span]
438    pub if_span: Span,
439    #[subdiagnostic]
440    pub missing_then_block_sub: IfExpressionMissingThenBlockSub,
441    #[subdiagnostic]
442    pub let_else_sub: Option<IfExpressionLetSomeSub>,
443}
444
445#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for IfExpressionMissingThenBlockSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    IfExpressionMissingThenBlockSub::UnfinishedCondition(__binding_0)
                        => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_condition_possibly_unfinished);
                        diag.span_help(__binding_0, __message);
                        diag.restore_args();
                    }
                    IfExpressionMissingThenBlockSub::AddThenBlock(__binding_0)
                        => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_add_then_block);
                        diag.span_help(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
446pub(crate) enum IfExpressionMissingThenBlockSub {
447    #[help(parse_condition_possibly_unfinished)]
448    UnfinishedCondition(#[primary_span] Span),
449    #[help(parse_add_then_block)]
450    AddThenBlock(#[primary_span] Span),
451}
452
453#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TernaryOperator 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 {
                    TernaryOperator {
                        span: __binding_0, sugg: __binding_1, no_sugg: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_ternary_operator);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        if __binding_2 {
                            diag.help(crate::fluent_generated::parse_use_if_else);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
454#[diag(parse_ternary_operator)]
455pub(crate) struct TernaryOperator {
456    #[primary_span]
457    pub span: Span,
458    /// If we have a span for the condition expression, suggest the if/else
459    #[subdiagnostic]
460    pub sugg: Option<TernaryOperatorSuggestion>,
461    /// Otherwise, just print the suggestion message
462    #[help(parse_use_if_else)]
463    pub no_sugg: bool,
464}
465
466#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for TernaryOperatorSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    TernaryOperatorSuggestion {
                        before_cond: __binding_0,
                        question: __binding_1,
                        colon: __binding_2,
                        end: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_35 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("if "))
                                });
                        let __code_36 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{"))
                                });
                        let __code_37 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("}} else {{"))
                                });
                        let __code_38 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_35));
                        suggestions.push((__binding_1, __code_36));
                        suggestions.push((__binding_2, __code_37));
                        suggestions.push((__binding_3, __code_38));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_if_else);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic, #[automatically_derived]
impl ::core::marker::Copy for TernaryOperatorSuggestion { }Copy, #[automatically_derived]
impl ::core::clone::Clone for TernaryOperatorSuggestion {
    #[inline]
    fn clone(&self) -> TernaryOperatorSuggestion {
        let _: ::core::clone::AssertParamIsClone<Span>;
        *self
    }
}Clone)]
467#[multipart_suggestion(parse_use_if_else, applicability = "maybe-incorrect", style = "verbose")]
468pub(crate) struct TernaryOperatorSuggestion {
469    #[suggestion_part(code = "if ")]
470    pub before_cond: Span,
471    #[suggestion_part(code = "{{")]
472    pub question: Span,
473    #[suggestion_part(code = "}} else {{")]
474    pub colon: Span,
475    #[suggestion_part(code = " }}")]
476    pub end: Span,
477}
478
479#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for IfExpressionLetSomeSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    IfExpressionLetSomeSub { if_span: __binding_0 } => {
                        let __code_39 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_extra_if_in_let_else);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_39, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
480#[suggestion(
481    parse_extra_if_in_let_else,
482    applicability = "maybe-incorrect",
483    code = "",
484    style = "verbose"
485)]
486pub(crate) struct IfExpressionLetSomeSub {
487    #[primary_span]
488    pub if_span: Span,
489}
490
491#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IfExpressionMissingCondition 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 {
                    IfExpressionMissingCondition {
                        if_span: __binding_0, block_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_if_expression_missing_condition);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_condition_label);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_block_label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
492#[diag(parse_if_expression_missing_condition)]
493pub(crate) struct IfExpressionMissingCondition {
494    #[primary_span]
495    #[label(parse_condition_label)]
496    pub if_span: Span,
497    #[label(parse_block_label)]
498    pub block_span: Span,
499}
500
501#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedExpressionFoundLet 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 {
                    ExpectedExpressionFoundLet {
                        span: __binding_0,
                        reason: __binding_1,
                        missing_let: __binding_2,
                        comparison: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_expression_found_let);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
502#[diag(parse_expected_expression_found_let)]
503#[note]
504pub(crate) struct ExpectedExpressionFoundLet {
505    #[primary_span]
506    pub span: Span,
507    #[subdiagnostic]
508    pub reason: ForbiddenLetReason,
509    #[subdiagnostic]
510    pub missing_let: Option<MaybeMissingLet>,
511    #[subdiagnostic]
512    pub comparison: Option<MaybeComparison>,
513}
514
515#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for OrInLetChain
            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 {
                    OrInLetChain { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_or_in_let_chain);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
516#[diag(parse_or_in_let_chain)]
517pub(crate) struct OrInLetChain {
518    #[primary_span]
519    pub span: Span,
520}
521
522#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MaybeMissingLet {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MaybeMissingLet { span: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_40 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("let "))
                                });
                        suggestions.push((__binding_0, __code_40));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_maybe_missing_let);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic, #[automatically_derived]
impl ::core::clone::Clone for MaybeMissingLet {
    #[inline]
    fn clone(&self) -> MaybeMissingLet {
        let _: ::core::clone::AssertParamIsClone<Span>;
        *self
    }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MaybeMissingLet { }Copy)]
523#[multipart_suggestion(
524    parse_maybe_missing_let,
525    applicability = "maybe-incorrect",
526    style = "verbose"
527)]
528pub(crate) struct MaybeMissingLet {
529    #[suggestion_part(code = "let ")]
530    pub span: Span,
531}
532
533#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MaybeComparison {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MaybeComparison { span: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_41 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("="))
                                });
                        suggestions.push((__binding_0, __code_41));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_maybe_comparison);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic, #[automatically_derived]
impl ::core::clone::Clone for MaybeComparison {
    #[inline]
    fn clone(&self) -> MaybeComparison {
        let _: ::core::clone::AssertParamIsClone<Span>;
        *self
    }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for MaybeComparison { }Copy)]
534#[multipart_suggestion(
535    parse_maybe_comparison,
536    applicability = "maybe-incorrect",
537    style = "verbose"
538)]
539pub(crate) struct MaybeComparison {
540    #[suggestion_part(code = "=")]
541    pub span: Span,
542}
543
544#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedEqForLetExpr 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 {
                    ExpectedEqForLetExpr {
                        span: __binding_0, sugg_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expect_eq_instead_of_eqeq);
                        let __code_42 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("="))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_42,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
545#[diag(parse_expect_eq_instead_of_eqeq)]
546pub(crate) struct ExpectedEqForLetExpr {
547    #[primary_span]
548    pub span: Span,
549    #[suggestion(applicability = "maybe-incorrect", code = "=", style = "verbose")]
550    pub sugg_span: Span,
551}
552
553#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedElseBlock 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 {
                    ExpectedElseBlock {
                        first_tok_span: __binding_0,
                        first_tok: __binding_1,
                        else_span: __binding_2,
                        condition_start: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_else_block);
                        let __code_43 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("if "))
                                            })].into_iter();
                        ;
                        diag.arg("first_tok", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_3,
                            crate::fluent_generated::_subdiag::suggestion, __code_43,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
554#[diag(parse_expected_else_block)]
555pub(crate) struct ExpectedElseBlock {
556    #[primary_span]
557    pub first_tok_span: Span,
558    pub first_tok: String,
559    #[label]
560    pub else_span: Span,
561    #[suggestion(applicability = "maybe-incorrect", code = "if ", style = "verbose")]
562    pub condition_start: Span,
563}
564
565#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedStructField 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 {
                    ExpectedStructField {
                        span: __binding_0,
                        token: __binding_1,
                        ident_span: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_struct_field);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_ident_label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
566#[diag(parse_expected_struct_field)]
567pub(crate) struct ExpectedStructField {
568    #[primary_span]
569    #[label]
570    pub span: Span,
571    pub token: Token,
572    #[label(parse_ident_label)]
573    pub ident_span: Span,
574}
575
576#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            OuterAttributeNotAllowedOnIfElse 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 {
                    OuterAttributeNotAllowedOnIfElse {
                        last: __binding_0,
                        branch_span: __binding_1,
                        ctx_span: __binding_2,
                        ctx: __binding_3,
                        attributes: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_outer_attribute_not_allowed_on_if_else);
                        let __code_44 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("ctx", __binding_3);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_branch_label);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_ctx_label);
                        diag.span_suggestions_with_style(__binding_4,
                            crate::fluent_generated::_subdiag::suggestion, __code_44,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
577#[diag(parse_outer_attribute_not_allowed_on_if_else)]
578pub(crate) struct OuterAttributeNotAllowedOnIfElse {
579    #[primary_span]
580    pub last: Span,
581
582    #[label(parse_branch_label)]
583    pub branch_span: Span,
584
585    #[label(parse_ctx_label)]
586    pub ctx_span: Span,
587    pub ctx: String,
588
589    #[suggestion(applicability = "machine-applicable", code = "", style = "verbose")]
590    pub attributes: Span,
591}
592
593#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingInInForLoop 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 {
                    MissingInInForLoop { span: __binding_0, sub: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_in_in_for_loop);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
594#[diag(parse_missing_in_in_for_loop)]
595pub(crate) struct MissingInInForLoop {
596    #[primary_span]
597    pub span: Span,
598    #[subdiagnostic]
599    pub sub: MissingInInForLoopSub,
600}
601
602#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MissingInInForLoopSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MissingInInForLoopSub::InNotOf(__binding_0) => {
                        let __code_45 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("in"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_in);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_45, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    MissingInInForLoopSub::InNotEq(__binding_0) => {
                        let __code_46 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("in"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_in);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_46, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    MissingInInForLoopSub::AddIn(__binding_0) => {
                        let __code_47 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" in "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_add_in);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_47, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
603pub(crate) enum MissingInInForLoopSub {
604    // User wrote `for pat of expr {}`
605    // Has been misleading, at least in the past (closed Issue #48492), thus maybe-incorrect
606    #[suggestion(parse_use_in, style = "verbose", applicability = "maybe-incorrect", code = "in")]
607    InNotOf(#[primary_span] Span),
608    // User wrote `for pat = expr {}`
609    #[suggestion(parse_use_in, style = "verbose", applicability = "maybe-incorrect", code = "in")]
610    InNotEq(#[primary_span] Span),
611    #[suggestion(parse_add_in, style = "verbose", applicability = "maybe-incorrect", code = " in ")]
612    AddIn(#[primary_span] Span),
613}
614
615#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingExpressionInForLoop 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 {
                    MissingExpressionInForLoop { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_expression_in_for_loop);
                        let __code_48 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("/* expression */ "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_48,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
616#[diag(parse_missing_expression_in_for_loop)]
617pub(crate) struct MissingExpressionInForLoop {
618    #[primary_span]
619    #[suggestion(
620        code = "/* expression */ ",
621        applicability = "has-placeholders",
622        style = "verbose"
623    )]
624    pub span: Span,
625}
626
627#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LoopElseNotSupported 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 {
                    LoopElseNotSupported {
                        span: __binding_0,
                        loop_kind: __binding_1,
                        loop_kw: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_loop_else);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("loop_kind", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_loop_keyword);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
628#[diag(parse_loop_else)]
629#[note]
630pub(crate) struct LoopElseNotSupported {
631    #[primary_span]
632    pub span: Span,
633    pub loop_kind: &'static str,
634    #[label(parse_loop_keyword)]
635    pub loop_kw: Span,
636}
637
638#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingCommaAfterMatchArm 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 {
                    MissingCommaAfterMatchArm { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_comma_after_match_arm);
                        let __code_49 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(","))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_49,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
639#[diag(parse_missing_comma_after_match_arm)]
640pub(crate) struct MissingCommaAfterMatchArm {
641    #[primary_span]
642    #[suggestion(applicability = "machine-applicable", code = ",", style = "verbose")]
643    pub span: Span,
644}
645
646#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for CatchAfterTry
            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 {
                    CatchAfterTry { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_catch_after_try);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
647#[diag(parse_catch_after_try)]
648#[help]
649pub(crate) struct CatchAfterTry {
650    #[primary_span]
651    pub span: Span,
652}
653
654#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CommaAfterBaseStruct 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 {
                    CommaAfterBaseStruct { span: __binding_0, comma: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_comma_after_base_struct);
                        let __code_50 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_50,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
655#[diag(parse_comma_after_base_struct)]
656#[note]
657pub(crate) struct CommaAfterBaseStruct {
658    #[primary_span]
659    pub span: Span,
660    #[suggestion(style = "verbose", applicability = "machine-applicable", code = "")]
661    pub comma: Span,
662}
663
664#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for EqFieldInit
            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 {
                    EqFieldInit { span: __binding_0, eq: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_eq_field_init);
                        let __code_51 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(":"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_51,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
665#[diag(parse_eq_field_init)]
666pub(crate) struct EqFieldInit {
667    #[primary_span]
668    pub span: Span,
669    #[suggestion(applicability = "machine-applicable", code = ":", style = "verbose")]
670    pub eq: Span,
671}
672
673#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DotDotDot
            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 {
                    DotDotDot { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dotdotdot);
                        let __code_52 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(".."))
                                            })].into_iter();
                        let __code_53 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("..="))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_suggest_exclusive_range,
                            __code_52, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_suggest_inclusive_range,
                            __code_53, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
674#[diag(parse_dotdotdot)]
675pub(crate) struct DotDotDot {
676    #[primary_span]
677    #[suggestion(
678        parse_suggest_exclusive_range,
679        applicability = "maybe-incorrect",
680        code = "..",
681        style = "verbose"
682    )]
683    #[suggestion(
684        parse_suggest_inclusive_range,
685        applicability = "maybe-incorrect",
686        code = "..=",
687        style = "verbose"
688    )]
689    pub span: Span,
690}
691
692#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LeftArrowOperator 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 {
                    LeftArrowOperator { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_left_arrow_operator);
                        let __code_54 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("< -"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_54,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
693#[diag(parse_left_arrow_operator)]
694pub(crate) struct LeftArrowOperator {
695    #[primary_span]
696    #[suggestion(applicability = "maybe-incorrect", code = "< -", style = "verbose")]
697    pub span: Span,
698}
699
700#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for RemoveLet
            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 {
                    RemoveLet { span: __binding_0, suggestion: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_remove_let);
                        let __code_55 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_55,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
701#[diag(parse_remove_let)]
702pub(crate) struct RemoveLet {
703    #[primary_span]
704    pub span: Span,
705    #[suggestion(applicability = "machine-applicable", code = "", style = "verbose")]
706    pub suggestion: Span,
707}
708
709#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for UseEqInstead
            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 {
                    UseEqInstead { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_use_eq_instead);
                        let __code_56 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("="))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_56,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
710#[diag(parse_use_eq_instead)]
711pub(crate) struct UseEqInstead {
712    #[primary_span]
713    #[suggestion(style = "verbose", applicability = "machine-applicable", code = "=")]
714    pub span: Span,
715}
716
717#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UseEmptyBlockNotSemi 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 {
                    UseEmptyBlockNotSemi { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_use_empty_block_not_semi);
                        let __code_57 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{{}}"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_57,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
718#[diag(parse_use_empty_block_not_semi)]
719pub(crate) struct UseEmptyBlockNotSemi {
720    #[primary_span]
721    #[suggestion(style = "hidden", applicability = "machine-applicable", code = "{{}}")]
722    pub span: Span,
723}
724
725#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ComparisonInterpretedAsGeneric 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 {
                    ComparisonInterpretedAsGeneric {
                        comparison: __binding_0,
                        r#type: __binding_1,
                        args: __binding_2,
                        suggestion: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_comparison_interpreted_as_generic);
                        ;
                        diag.arg("type", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_label_comparison);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_label_args);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
726#[diag(parse_comparison_interpreted_as_generic)]
727pub(crate) struct ComparisonInterpretedAsGeneric {
728    #[primary_span]
729    #[label(parse_label_comparison)]
730    pub comparison: Span,
731    pub r#type: Path,
732    #[label(parse_label_args)]
733    pub args: Span,
734    #[subdiagnostic]
735    pub suggestion: ComparisonOrShiftInterpretedAsGenericSugg,
736}
737
738#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ShiftInterpretedAsGeneric 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 {
                    ShiftInterpretedAsGeneric {
                        shift: __binding_0,
                        r#type: __binding_1,
                        args: __binding_2,
                        suggestion: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_shift_interpreted_as_generic);
                        ;
                        diag.arg("type", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_label_comparison);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_label_args);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
739#[diag(parse_shift_interpreted_as_generic)]
740pub(crate) struct ShiftInterpretedAsGeneric {
741    #[primary_span]
742    #[label(parse_label_comparison)]
743    pub shift: Span,
744    pub r#type: Path,
745    #[label(parse_label_args)]
746    pub args: Span,
747    #[subdiagnostic]
748    pub suggestion: ComparisonOrShiftInterpretedAsGenericSugg,
749}
750
751#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            ComparisonOrShiftInterpretedAsGenericSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ComparisonOrShiftInterpretedAsGenericSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_58 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_59 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_58));
                        suggestions.push((__binding_1, __code_59));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
752#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
753pub(crate) struct ComparisonOrShiftInterpretedAsGenericSugg {
754    #[suggestion_part(code = "(")]
755    pub left: Span,
756    #[suggestion_part(code = ")")]
757    pub right: Span,
758}
759
760#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FoundExprWouldBeStmt 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 {
                    FoundExprWouldBeStmt {
                        span: __binding_0,
                        token: __binding_1,
                        suggestion: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_found_expr_would_be_stmt);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
761#[diag(parse_found_expr_would_be_stmt)]
762pub(crate) struct FoundExprWouldBeStmt {
763    #[primary_span]
764    #[label]
765    pub span: Span,
766    pub token: Token,
767    #[subdiagnostic]
768    pub suggestion: ExprParenthesesNeeded,
769}
770
771#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterExtraCharactersAfterClose 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 {
                    FrontmatterExtraCharactersAfterClose { span: __binding_0 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_extra_characters_after_close);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
772#[diag(parse_frontmatter_extra_characters_after_close)]
773pub(crate) struct FrontmatterExtraCharactersAfterClose {
774    #[primary_span]
775    pub span: Span,
776}
777
778#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterInvalidInfostring 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 {
                    FrontmatterInvalidInfostring { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_invalid_infostring);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
779#[diag(parse_frontmatter_invalid_infostring)]
780#[note]
781pub(crate) struct FrontmatterInvalidInfostring {
782    #[primary_span]
783    pub span: Span,
784}
785
786#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterInvalidOpeningPrecedingWhitespace 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 {
                    FrontmatterInvalidOpeningPrecedingWhitespace {
                        span: __binding_0, note_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_invalid_opening_preceding_whitespace);
                        ;
                        diag.span(__binding_0);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
787#[diag(parse_frontmatter_invalid_opening_preceding_whitespace)]
788pub(crate) struct FrontmatterInvalidOpeningPrecedingWhitespace {
789    #[primary_span]
790    pub span: Span,
791    #[note]
792    pub note_span: Span,
793}
794
795#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterUnclosed 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 {
                    FrontmatterUnclosed {
                        span: __binding_0, note_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_unclosed);
                        ;
                        diag.span(__binding_0);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
796#[diag(parse_frontmatter_unclosed)]
797pub(crate) struct FrontmatterUnclosed {
798    #[primary_span]
799    pub span: Span,
800    #[note]
801    pub note_span: Span,
802}
803
804#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterInvalidClosingPrecedingWhitespace 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 {
                    FrontmatterInvalidClosingPrecedingWhitespace {
                        span: __binding_0, note_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_invalid_close_preceding_whitespace);
                        ;
                        diag.span(__binding_0);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
805#[diag(parse_frontmatter_invalid_close_preceding_whitespace)]
806pub(crate) struct FrontmatterInvalidClosingPrecedingWhitespace {
807    #[primary_span]
808    pub span: Span,
809    #[note]
810    pub note_span: Span,
811}
812
813#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterLengthMismatch 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 {
                    FrontmatterLengthMismatch {
                        span: __binding_0,
                        opening: __binding_1,
                        close: __binding_2,
                        len_opening: __binding_3,
                        len_close: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_length_mismatch);
                        ;
                        diag.arg("len_opening", __binding_3);
                        diag.arg("len_close", __binding_4);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_label_opening);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_label_close);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
814#[diag(parse_frontmatter_length_mismatch)]
815pub(crate) struct FrontmatterLengthMismatch {
816    #[primary_span]
817    pub span: Span,
818    #[label(parse_label_opening)]
819    pub opening: Span,
820    #[label(parse_label_close)]
821    pub close: Span,
822    pub len_opening: usize,
823    pub len_close: usize,
824}
825
826#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FrontmatterTooManyDashes 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 {
                    FrontmatterTooManyDashes { len_opening: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_frontmatter_too_many_dashes);
                        ;
                        diag.arg("len_opening", __binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
827#[diag(parse_frontmatter_too_many_dashes)]
828pub(crate) struct FrontmatterTooManyDashes {
829    pub len_opening: usize,
830}
831
832#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BareCrFrontmatter 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 {
                    BareCrFrontmatter { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bare_cr_in_frontmatter);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
833#[diag(parse_bare_cr_in_frontmatter)]
834pub(crate) struct BareCrFrontmatter {
835    #[primary_span]
836    pub span: Span,
837}
838
839#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LeadingPlusNotSupported 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 {
                    LeadingPlusNotSupported {
                        span: __binding_0,
                        remove_plus: __binding_1,
                        add_parentheses: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_leading_plus_not_supported);
                        let __code_60 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::parse_suggestion_remove_plus,
                                __code_60, rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
840#[diag(parse_leading_plus_not_supported)]
841pub(crate) struct LeadingPlusNotSupported {
842    #[primary_span]
843    #[label]
844    pub span: Span,
845    #[suggestion(
846        parse_suggestion_remove_plus,
847        style = "verbose",
848        code = "",
849        applicability = "machine-applicable"
850    )]
851    pub remove_plus: Option<Span>,
852    #[subdiagnostic]
853    pub add_parentheses: Option<ExprParenthesesNeeded>,
854}
855
856#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ParenthesesWithStructFields 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 {
                    ParenthesesWithStructFields {
                        span: __binding_0,
                        r#type: __binding_1,
                        braces_for_struct: __binding_2,
                        no_fields_for_fn: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_parentheses_with_struct_fields);
                        ;
                        diag.arg("type", __binding_1);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_2);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
857#[diag(parse_parentheses_with_struct_fields)]
858pub(crate) struct ParenthesesWithStructFields {
859    #[primary_span]
860    pub span: Span,
861    pub r#type: Path,
862    #[subdiagnostic]
863    pub braces_for_struct: BracesForStructLiteral,
864    #[subdiagnostic]
865    pub no_fields_for_fn: NoFieldsForFnCall,
866}
867
868#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for BracesForStructLiteral {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    BracesForStructLiteral {
                        first: __binding_0, second: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_61 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" {{ "))
                                });
                        let __code_62 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_61));
                        suggestions.push((__binding_1, __code_62));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_braces_for_struct);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
869#[multipart_suggestion(parse_suggestion_braces_for_struct, applicability = "maybe-incorrect")]
870pub(crate) struct BracesForStructLiteral {
871    #[suggestion_part(code = " {{ ")]
872    pub first: Span,
873    #[suggestion_part(code = " }}")]
874    pub second: Span,
875}
876
877#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NoFieldsForFnCall {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NoFieldsForFnCall { fields: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_63 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_63.clone()));
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_no_fields_for_fn);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
878#[multipart_suggestion(parse_suggestion_no_fields_for_fn, applicability = "maybe-incorrect")]
879pub(crate) struct NoFieldsForFnCall {
880    #[suggestion_part(code = "")]
881    pub fields: Vec<Span>,
882}
883
884#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LabeledLoopInBreak 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 {
                    LabeledLoopInBreak { span: __binding_0, sub: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_labeled_loop_in_break);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
885#[diag(parse_labeled_loop_in_break)]
886pub(crate) struct LabeledLoopInBreak {
887    #[primary_span]
888    pub span: Span,
889    #[subdiagnostic]
890    pub sub: WrapInParentheses,
891}
892
893#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for WrapInParentheses {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    WrapInParentheses::Expression {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_64 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_65 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_64));
                        suggestions.push((__binding_1, __code_65));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_wrap_expression_in_parentheses);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    WrapInParentheses::MacroArgs {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_66 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_67 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_66));
                        suggestions.push((__binding_1, __code_67));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_wrap_macro_in_parentheses);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
894pub(crate) enum WrapInParentheses {
895    #[multipart_suggestion(
896        parse_sugg_wrap_expression_in_parentheses,
897        applicability = "machine-applicable"
898    )]
899    Expression {
900        #[suggestion_part(code = "(")]
901        left: Span,
902        #[suggestion_part(code = ")")]
903        right: Span,
904    },
905    #[multipart_suggestion(
906        parse_sugg_wrap_macro_in_parentheses,
907        applicability = "machine-applicable"
908    )]
909    MacroArgs {
910        #[suggestion_part(code = "(")]
911        left: Span,
912        #[suggestion_part(code = ")")]
913        right: Span,
914    },
915}
916
917#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ArrayBracketsInsteadOfBraces 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 {
                    ArrayBracketsInsteadOfBraces {
                        span: __binding_0, sub: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_array_brackets_instead_of_braces);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
918#[diag(parse_array_brackets_instead_of_braces)]
919pub(crate) struct ArrayBracketsInsteadOfBraces {
920    #[primary_span]
921    pub span: Span,
922    #[subdiagnostic]
923    pub sub: ArrayBracketsInsteadOfBracesSugg,
924}
925
926#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ArrayBracketsInsteadOfBracesSugg
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ArrayBracketsInsteadOfBracesSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_68 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("["))
                                });
                        let __code_69 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("]"))
                                });
                        suggestions.push((__binding_0, __code_68));
                        suggestions.push((__binding_1, __code_69));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
927#[multipart_suggestion(parse_suggestion, applicability = "maybe-incorrect")]
928pub(crate) struct ArrayBracketsInsteadOfBracesSugg {
929    #[suggestion_part(code = "[")]
930    pub left: Span,
931    #[suggestion_part(code = "]")]
932    pub right: Span,
933}
934
935#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MatchArmBodyWithoutBraces 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 {
                    MatchArmBodyWithoutBraces {
                        statements: __binding_0,
                        arrow: __binding_1,
                        num_statements: __binding_2,
                        sub: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_match_arm_body_without_braces);
                        ;
                        diag.arg("num_statements", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_label_statements);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_label_arrow);
                        diag.subdiagnostic(__binding_3);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
936#[diag(parse_match_arm_body_without_braces)]
937pub(crate) struct MatchArmBodyWithoutBraces {
938    #[primary_span]
939    #[label(parse_label_statements)]
940    pub statements: Span,
941    #[label(parse_label_arrow)]
942    pub arrow: Span,
943    pub num_statements: usize,
944    #[subdiagnostic]
945    pub sub: MatchArmBodyWithoutBracesSugg,
946}
947
948#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InclusiveRangeExtraEquals 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 {
                    InclusiveRangeExtraEquals { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_inclusive_range_extra_equals);
                        let __code_70 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("..="))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_suggestion_remove_eq,
                            __code_70, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
949#[diag(parse_inclusive_range_extra_equals)]
950#[note]
951pub(crate) struct InclusiveRangeExtraEquals {
952    #[primary_span]
953    #[suggestion(
954        parse_suggestion_remove_eq,
955        style = "verbose",
956        code = "..=",
957        applicability = "maybe-incorrect"
958    )]
959    pub span: Span,
960}
961
962#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InclusiveRangeMatchArrow 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 {
                    InclusiveRangeMatchArrow {
                        arrow: __binding_0,
                        span: __binding_1,
                        after_pat: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_inclusive_range_match_arrow);
                        let __code_71 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::_subdiag::suggestion, __code_71,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
963#[diag(parse_inclusive_range_match_arrow)]
964pub(crate) struct InclusiveRangeMatchArrow {
965    #[primary_span]
966    pub arrow: Span,
967    #[label]
968    pub span: Span,
969    #[suggestion(style = "verbose", code = " ", applicability = "machine-applicable")]
970    pub after_pat: Span,
971}
972
973#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InclusiveRangeNoEnd 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 {
                    InclusiveRangeNoEnd {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_inclusive_range_no_end);
                        let __code_72 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.code(E0586);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::parse_suggestion_open_range,
                            __code_72, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
974#[diag(parse_inclusive_range_no_end, code = E0586)]
975#[note]
976pub(crate) struct InclusiveRangeNoEnd {
977    #[primary_span]
978    pub span: Span,
979    #[suggestion(
980        parse_suggestion_open_range,
981        code = "",
982        applicability = "machine-applicable",
983        style = "verbose"
984    )]
985    pub suggestion: Span,
986}
987
988#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MatchArmBodyWithoutBracesSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MatchArmBodyWithoutBracesSugg::AddBraces {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_73 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{ "))
                                });
                        let __code_74 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_73));
                        suggestions.push((__binding_1, __code_74));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_add_braces);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    MatchArmBodyWithoutBracesSugg::UseComma {
                        semicolon: __binding_0 } => {
                        let __code_75 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(","))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_use_comma_not_semicolon);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_75, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
989pub(crate) enum MatchArmBodyWithoutBracesSugg {
990    #[multipart_suggestion(parse_suggestion_add_braces, applicability = "machine-applicable")]
991    AddBraces {
992        #[suggestion_part(code = "{{ ")]
993        left: Span,
994        #[suggestion_part(code = " }}")]
995        right: Span,
996    },
997    #[suggestion(
998        parse_suggestion_use_comma_not_semicolon,
999        code = ",",
1000        applicability = "machine-applicable",
1001        style = "verbose"
1002    )]
1003    UseComma {
1004        #[primary_span]
1005        semicolon: Span,
1006    },
1007}
1008
1009#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            StructLiteralNotAllowedHere 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 {
                    StructLiteralNotAllowedHere {
                        span: __binding_0, sub: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_struct_literal_not_allowed_here);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1010#[diag(parse_struct_literal_not_allowed_here)]
1011pub(crate) struct StructLiteralNotAllowedHere {
1012    #[primary_span]
1013    pub span: Span,
1014    #[subdiagnostic]
1015    pub sub: StructLiteralNotAllowedHereSugg,
1016}
1017
1018#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for StructLiteralNotAllowedHereSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    StructLiteralNotAllowedHereSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_76 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_77 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_76));
                        suggestions.push((__binding_1, __code_77));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1019#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1020pub(crate) struct StructLiteralNotAllowedHereSugg {
1021    #[suggestion_part(code = "(")]
1022    pub left: Span,
1023    #[suggestion_part(code = ")")]
1024    pub right: Span,
1025}
1026
1027#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidLiteralSuffixOnTupleIndex 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 {
                    InvalidLiteralSuffixOnTupleIndex {
                        span: __binding_0, suffix: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_literal_suffix_on_tuple_index);
                        ;
                        diag.arg("suffix", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1028#[diag(parse_invalid_literal_suffix_on_tuple_index)]
1029pub(crate) struct InvalidLiteralSuffixOnTupleIndex {
1030    #[primary_span]
1031    #[label]
1032    pub span: Span,
1033    pub suffix: Symbol,
1034}
1035
1036#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NonStringAbiLiteral 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 {
                    NonStringAbiLiteral { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_non_string_abi_literal);
                        let __code_78 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\"C\""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_78,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1037#[diag(parse_non_string_abi_literal)]
1038pub(crate) struct NonStringAbiLiteral {
1039    #[primary_span]
1040    #[suggestion(code = "\"C\"", applicability = "maybe-incorrect", style = "verbose")]
1041    pub span: Span,
1042}
1043
1044#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MismatchedClosingDelimiter 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 {
                    MismatchedClosingDelimiter {
                        spans: __binding_0,
                        delimiter: __binding_1,
                        unmatched: __binding_2,
                        opening_candidate: __binding_3,
                        unclosed: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_mismatched_closing_delimiter);
                        ;
                        diag.arg("delimiter", __binding_1);
                        diag.span(__binding_0.clone());
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_label_unmatched);
                        if let Some(__binding_3) = __binding_3 {
                            diag.span_label(__binding_3,
                                crate::fluent_generated::parse_label_opening_candidate);
                        }
                        if let Some(__binding_4) = __binding_4 {
                            diag.span_label(__binding_4,
                                crate::fluent_generated::parse_label_unclosed);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1045#[diag(parse_mismatched_closing_delimiter)]
1046pub(crate) struct MismatchedClosingDelimiter {
1047    #[primary_span]
1048    pub spans: Vec<Span>,
1049    pub delimiter: String,
1050    #[label(parse_label_unmatched)]
1051    pub unmatched: Span,
1052    #[label(parse_label_opening_candidate)]
1053    pub opening_candidate: Option<Span>,
1054    #[label(parse_label_unclosed)]
1055    pub unclosed: Option<Span>,
1056}
1057
1058#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectVisibilityRestriction 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 {
                    IncorrectVisibilityRestriction {
                        span: __binding_0, inner_str: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_visibility_restriction);
                        let __code_79 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("in {0}", __binding_1))
                                            })].into_iter();
                        diag.code(E0704);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("inner_str", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_79,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1059#[diag(parse_incorrect_visibility_restriction, code = E0704)]
1060#[help]
1061pub(crate) struct IncorrectVisibilityRestriction {
1062    #[primary_span]
1063    #[suggestion(code = "in {inner_str}", applicability = "machine-applicable", style = "verbose")]
1064    pub span: Span,
1065    pub inner_str: String,
1066}
1067
1068#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AssignmentElseNotAllowed 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 {
                    AssignmentElseNotAllowed { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_assignment_else_not_allowed);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1069#[diag(parse_assignment_else_not_allowed)]
1070pub(crate) struct AssignmentElseNotAllowed {
1071    #[primary_span]
1072    pub span: Span,
1073}
1074
1075#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedStatementAfterOuterAttr 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 {
                    ExpectedStatementAfterOuterAttr { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_statement_after_outer_attr);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1076#[diag(parse_expected_statement_after_outer_attr)]
1077pub(crate) struct ExpectedStatementAfterOuterAttr {
1078    #[primary_span]
1079    pub span: Span,
1080}
1081
1082#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocCommentDoesNotDocumentAnything 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 {
                    DocCommentDoesNotDocumentAnything {
                        span: __binding_0, missing_comma: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_doc_comment_does_not_document_anything);
                        let __code_80 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(","))
                                            })].into_iter();
                        diag.code(E0585);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::_subdiag::suggestion, __code_80,
                                rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1083#[diag(parse_doc_comment_does_not_document_anything, code = E0585)]
1084#[help]
1085pub(crate) struct DocCommentDoesNotDocumentAnything {
1086    #[primary_span]
1087    pub span: Span,
1088    #[suggestion(code = ",", applicability = "machine-applicable", style = "verbose")]
1089    pub missing_comma: Option<Span>,
1090}
1091
1092#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConstLetMutuallyExclusive 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 {
                    ConstLetMutuallyExclusive { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_const_let_mutually_exclusive);
                        let __code_81 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("const"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_81,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1093#[diag(parse_const_let_mutually_exclusive)]
1094pub(crate) struct ConstLetMutuallyExclusive {
1095    #[primary_span]
1096    #[suggestion(code = "const", applicability = "maybe-incorrect", style = "verbose")]
1097    pub span: Span,
1098}
1099
1100#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidExpressionInLetElse 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 {
                    InvalidExpressionInLetElse {
                        span: __binding_0, operator: __binding_1, sugg: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_expression_in_let_else);
                        ;
                        diag.arg("operator", __binding_1);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1101#[diag(parse_invalid_expression_in_let_else)]
1102pub(crate) struct InvalidExpressionInLetElse {
1103    #[primary_span]
1104    pub span: Span,
1105    pub operator: &'static str,
1106    #[subdiagnostic]
1107    pub sugg: WrapInParentheses,
1108}
1109
1110#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidCurlyInLetElse 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 {
                    InvalidCurlyInLetElse { span: __binding_0, sugg: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_curly_in_let_else);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1111#[diag(parse_invalid_curly_in_let_else)]
1112pub(crate) struct InvalidCurlyInLetElse {
1113    #[primary_span]
1114    pub span: Span,
1115    #[subdiagnostic]
1116    pub sugg: WrapInParentheses,
1117}
1118
1119#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CompoundAssignmentExpressionInLet 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 {
                    CompoundAssignmentExpressionInLet {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_compound_assignment_expression_in_let);
                        let __code_82 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_82,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1120#[diag(parse_compound_assignment_expression_in_let)]
1121#[help]
1122pub(crate) struct CompoundAssignmentExpressionInLet {
1123    #[primary_span]
1124    pub span: Span,
1125    #[suggestion(style = "verbose", code = "", applicability = "maybe-incorrect")]
1126    pub suggestion: Span,
1127}
1128
1129#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            SuffixedLiteralInAttribute 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 {
                    SuffixedLiteralInAttribute { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_suffixed_literal_in_attribute);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1130#[diag(parse_suffixed_literal_in_attribute)]
1131#[help]
1132pub(crate) struct SuffixedLiteralInAttribute {
1133    #[primary_span]
1134    pub span: Span,
1135}
1136
1137#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidMetaItem 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 {
                    InvalidMetaItem {
                        span: __binding_0,
                        descr: __binding_1,
                        quote_ident_sugg: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_meta_item);
                        ;
                        diag.arg("descr", __binding_1);
                        diag.span(__binding_0);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1138#[diag(parse_invalid_meta_item)]
1139pub(crate) struct InvalidMetaItem {
1140    #[primary_span]
1141    pub span: Span,
1142    pub descr: String,
1143    #[subdiagnostic]
1144    pub quote_ident_sugg: Option<InvalidMetaItemQuoteIdentSugg>,
1145}
1146
1147#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvalidMetaItemQuoteIdentSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvalidMetaItemQuoteIdentSugg {
                        before: __binding_0, after: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_83 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("\""))
                                });
                        let __code_84 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("\""))
                                });
                        suggestions.push((__binding_0, __code_83));
                        suggestions.push((__binding_1, __code_84));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_quote_ident_sugg);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1148#[multipart_suggestion(parse_quote_ident_sugg, applicability = "machine-applicable")]
1149pub(crate) struct InvalidMetaItemQuoteIdentSugg {
1150    #[suggestion_part(code = "\"")]
1151    pub before: Span,
1152    #[suggestion_part(code = "\"")]
1153    pub after: Span,
1154}
1155
1156#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for SuggEscapeIdentifier {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    SuggEscapeIdentifier {
                        span: __binding_0, ident_name: __binding_1 } => {
                        let __code_85 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("r#"))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("ident_name", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_escape_identifier);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_85, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1157#[suggestion(
1158    parse_sugg_escape_identifier,
1159    style = "verbose",
1160    applicability = "maybe-incorrect",
1161    code = "r#"
1162)]
1163pub(crate) struct SuggEscapeIdentifier {
1164    #[primary_span]
1165    pub span: Span,
1166    pub ident_name: String,
1167}
1168
1169#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for SuggRemoveComma {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    SuggRemoveComma { span: __binding_0 } => {
                        let __code_86 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_remove_comma);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_86, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1170#[suggestion(
1171    parse_sugg_remove_comma,
1172    applicability = "machine-applicable",
1173    code = "",
1174    style = "verbose"
1175)]
1176pub(crate) struct SuggRemoveComma {
1177    #[primary_span]
1178    pub span: Span,
1179}
1180
1181#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for SuggAddMissingLetStmt {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    SuggAddMissingLetStmt { span: __binding_0 } => {
                        let __code_87 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("let "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_add_let_for_stmt);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_87, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1182#[suggestion(
1183    parse_sugg_add_let_for_stmt,
1184    style = "verbose",
1185    applicability = "maybe-incorrect",
1186    code = "let "
1187)]
1188pub(crate) struct SuggAddMissingLetStmt {
1189    #[primary_span]
1190    pub span: Span,
1191}
1192
1193#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedIdentifierFound {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedIdentifierFound::ReservedIdentifier(__binding_0) =>
                        {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expected_identifier_found_reserved_identifier);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    ExpectedIdentifierFound::Keyword(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expected_identifier_found_keyword);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    ExpectedIdentifierFound::ReservedKeyword(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expected_identifier_found_reserved_keyword);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    ExpectedIdentifierFound::DocComment(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expected_identifier_found_doc_comment);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    ExpectedIdentifierFound::MetaVar(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expected_identifier_found_metavar);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                    ExpectedIdentifierFound::Other(__binding_0) => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_expected_identifier);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1194pub(crate) enum ExpectedIdentifierFound {
1195    #[label(parse_expected_identifier_found_reserved_identifier)]
1196    ReservedIdentifier(#[primary_span] Span),
1197    #[label(parse_expected_identifier_found_keyword)]
1198    Keyword(#[primary_span] Span),
1199    #[label(parse_expected_identifier_found_reserved_keyword)]
1200    ReservedKeyword(#[primary_span] Span),
1201    #[label(parse_expected_identifier_found_doc_comment)]
1202    DocComment(#[primary_span] Span),
1203    #[label(parse_expected_identifier_found_metavar)]
1204    MetaVar(#[primary_span] Span),
1205    #[label(parse_expected_identifier)]
1206    Other(#[primary_span] Span),
1207}
1208
1209impl ExpectedIdentifierFound {
1210    pub(crate) fn new(token_descr: Option<TokenDescription>, span: Span) -> Self {
1211        (match token_descr {
1212            Some(TokenDescription::ReservedIdentifier) => {
1213                ExpectedIdentifierFound::ReservedIdentifier
1214            }
1215            Some(TokenDescription::Keyword) => ExpectedIdentifierFound::Keyword,
1216            Some(TokenDescription::ReservedKeyword) => ExpectedIdentifierFound::ReservedKeyword,
1217            Some(TokenDescription::DocComment) => ExpectedIdentifierFound::DocComment,
1218            Some(TokenDescription::MetaVar(_)) => ExpectedIdentifierFound::MetaVar,
1219            None => ExpectedIdentifierFound::Other,
1220        })(span)
1221    }
1222}
1223
1224pub(crate) struct ExpectedIdentifier {
1225    pub span: Span,
1226    pub token: Token,
1227    pub suggest_raw: Option<SuggEscapeIdentifier>,
1228    pub suggest_remove_comma: Option<SuggRemoveComma>,
1229    pub help_cannot_start_number: Option<HelpIdentifierStartsWithNumber>,
1230}
1231
1232impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for ExpectedIdentifier {
1233    #[track_caller]
1234    fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
1235        let token_descr = TokenDescription::from_token(&self.token);
1236
1237        let mut add_token = true;
1238        let mut diag = Diag::new(
1239            dcx,
1240            level,
1241            match token_descr {
1242                Some(TokenDescription::ReservedIdentifier) => {
1243                    fluent::parse_expected_identifier_found_reserved_identifier_str
1244                }
1245                Some(TokenDescription::Keyword) => {
1246                    fluent::parse_expected_identifier_found_keyword_str
1247                }
1248                Some(TokenDescription::ReservedKeyword) => {
1249                    fluent::parse_expected_identifier_found_reserved_keyword_str
1250                }
1251                Some(TokenDescription::DocComment) => {
1252                    fluent::parse_expected_identifier_found_doc_comment_str
1253                }
1254                Some(TokenDescription::MetaVar(_)) => {
1255                    add_token = false;
1256                    fluent::parse_expected_identifier_found_metavar_str
1257                }
1258                None => fluent::parse_expected_identifier_found_str,
1259            },
1260        );
1261        diag.span(self.span);
1262        if add_token {
1263            diag.arg("token", self.token);
1264        }
1265
1266        if let Some(sugg) = self.suggest_raw {
1267            sugg.add_to_diag(&mut diag);
1268        }
1269
1270        ExpectedIdentifierFound::new(token_descr, self.span).add_to_diag(&mut diag);
1271
1272        if let Some(sugg) = self.suggest_remove_comma {
1273            sugg.add_to_diag(&mut diag);
1274        }
1275
1276        if let Some(help) = self.help_cannot_start_number {
1277            help.add_to_diag(&mut diag);
1278        }
1279
1280        diag
1281    }
1282}
1283
1284#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for HelpIdentifierStartsWithNumber {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    HelpIdentifierStartsWithNumber { num_span: __binding_0 } =>
                        {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_invalid_identifier_with_leading_number);
                        diag.span_help(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1285#[help(parse_invalid_identifier_with_leading_number)]
1286pub(crate) struct HelpIdentifierStartsWithNumber {
1287    #[primary_span]
1288    pub num_span: Span,
1289}
1290
1291pub(crate) struct ExpectedSemi {
1292    pub span: Span,
1293    pub token: Token,
1294
1295    pub unexpected_token_label: Option<Span>,
1296    pub sugg: ExpectedSemiSugg,
1297}
1298
1299impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for ExpectedSemi {
1300    #[track_caller]
1301    fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, G> {
1302        let token_descr = TokenDescription::from_token(&self.token);
1303
1304        let mut add_token = true;
1305        let mut diag = Diag::new(
1306            dcx,
1307            level,
1308            match token_descr {
1309                Some(TokenDescription::ReservedIdentifier) => {
1310                    fluent::parse_expected_semi_found_reserved_identifier_str
1311                }
1312                Some(TokenDescription::Keyword) => fluent::parse_expected_semi_found_keyword_str,
1313                Some(TokenDescription::ReservedKeyword) => {
1314                    fluent::parse_expected_semi_found_reserved_keyword_str
1315                }
1316                Some(TokenDescription::DocComment) => {
1317                    fluent::parse_expected_semi_found_doc_comment_str
1318                }
1319                Some(TokenDescription::MetaVar(_)) => {
1320                    add_token = false;
1321                    fluent::parse_expected_semi_found_metavar_str
1322                }
1323                None => fluent::parse_expected_semi_found_str,
1324            },
1325        );
1326        diag.span(self.span);
1327        if add_token {
1328            diag.arg("token", self.token);
1329        }
1330
1331        if let Some(unexpected_token_label) = self.unexpected_token_label {
1332            diag.span_label(unexpected_token_label, fluent::parse_label_unexpected_token);
1333        }
1334
1335        self.sugg.add_to_diag(&mut diag);
1336
1337        diag
1338    }
1339}
1340
1341#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExpectedSemiSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExpectedSemiSugg::ChangeToSemi(__binding_0) => {
                        let __code_88 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(";"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_change_this_to_semi);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_88, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag.restore_args();
                    }
                    ExpectedSemiSugg::AddSemi(__binding_0) => {
                        let __code_89 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(";"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_add_semi);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_89, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1342pub(crate) enum ExpectedSemiSugg {
1343    #[suggestion(
1344        parse_sugg_change_this_to_semi,
1345        code = ";",
1346        applicability = "machine-applicable",
1347        style = "short"
1348    )]
1349    ChangeToSemi(#[primary_span] Span),
1350    #[suggestion(
1351        parse_sugg_add_semi,
1352        code = ";",
1353        applicability = "machine-applicable",
1354        style = "short"
1355    )]
1356    AddSemi(#[primary_span] Span),
1357}
1358
1359#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            StructLiteralBodyWithoutPath 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 {
                    StructLiteralBodyWithoutPath {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_struct_literal_body_without_path);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1360#[diag(parse_struct_literal_body_without_path)]
1361pub(crate) struct StructLiteralBodyWithoutPath {
1362    #[primary_span]
1363    pub span: Span,
1364    #[subdiagnostic]
1365    pub sugg: StructLiteralBodyWithoutPathSugg,
1366}
1367
1368#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for StructLiteralBodyWithoutPathSugg
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    StructLiteralBodyWithoutPathSugg {
                        before: __binding_0, after: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_90 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{ SomeStruct "))
                                });
                        let __code_91 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_90));
                        suggestions.push((__binding_1, __code_91));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1369#[multipart_suggestion(parse_suggestion, applicability = "has-placeholders")]
1370pub(crate) struct StructLiteralBodyWithoutPathSugg {
1371    #[suggestion_part(code = "{{ SomeStruct ")]
1372    pub before: Span,
1373    #[suggestion_part(code = " }}")]
1374    pub after: Span,
1375}
1376
1377#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnmatchedAngleBrackets 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 {
                    UnmatchedAngleBrackets {
                        span: __binding_0, num_extra_brackets: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unmatched_angle_brackets);
                        let __code_92 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("num_extra_brackets", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_92,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1378#[diag(parse_unmatched_angle_brackets)]
1379pub(crate) struct UnmatchedAngleBrackets {
1380    #[primary_span]
1381    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
1382    pub span: Span,
1383    pub num_extra_brackets: usize,
1384}
1385
1386#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            GenericParamsWithoutAngleBrackets 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 {
                    GenericParamsWithoutAngleBrackets {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_generic_parameters_without_angle_brackets);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1387#[diag(parse_generic_parameters_without_angle_brackets)]
1388pub(crate) struct GenericParamsWithoutAngleBrackets {
1389    #[primary_span]
1390    pub span: Span,
1391    #[subdiagnostic]
1392    pub sugg: GenericParamsWithoutAngleBracketsSugg,
1393}
1394
1395#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            GenericParamsWithoutAngleBracketsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    GenericParamsWithoutAngleBracketsSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_93 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("<"))
                                });
                        let __code_94 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(">"))
                                });
                        suggestions.push((__binding_0, __code_93));
                        suggestions.push((__binding_1, __code_94));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1396#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1397pub(crate) struct GenericParamsWithoutAngleBracketsSugg {
1398    #[suggestion_part(code = "<")]
1399    pub left: Span,
1400    #[suggestion_part(code = ">")]
1401    pub right: Span,
1402}
1403
1404#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ComparisonOperatorsCannotBeChained 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 {
                    ComparisonOperatorsCannotBeChained {
                        span: __binding_0,
                        suggest_turbofish: __binding_1,
                        help_turbofish: __binding_2,
                        chaining_sugg: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_comparison_operators_cannot_be_chained);
                        let __code_95 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("::"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0.clone());
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::parse_sugg_turbofish_syntax,
                                __code_95, rustc_errors::Applicability::MaybeIncorrect,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        if __binding_2 {
                            diag.help(crate::fluent_generated::parse_sugg_turbofish_syntax);
                        }
                        if __binding_2 {
                            diag.help(crate::fluent_generated::parse_sugg_parentheses_for_function_args);
                        }
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1405#[diag(parse_comparison_operators_cannot_be_chained)]
1406pub(crate) struct ComparisonOperatorsCannotBeChained {
1407    #[primary_span]
1408    pub span: Vec<Span>,
1409    #[suggestion(
1410        parse_sugg_turbofish_syntax,
1411        style = "verbose",
1412        code = "::",
1413        applicability = "maybe-incorrect"
1414    )]
1415    pub suggest_turbofish: Option<Span>,
1416    #[help(parse_sugg_turbofish_syntax)]
1417    #[help(parse_sugg_parentheses_for_function_args)]
1418    pub help_turbofish: bool,
1419    #[subdiagnostic]
1420    pub chaining_sugg: Option<ComparisonOperatorsCannotBeChainedSugg>,
1421}
1422
1423#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            ComparisonOperatorsCannotBeChainedSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ComparisonOperatorsCannotBeChainedSugg::SplitComparison {
                        span: __binding_0, middle_term: __binding_1 } => {
                        let __code_96 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" && {0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("middle_term", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_split_comparison);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_96, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    ComparisonOperatorsCannotBeChainedSugg::Parenthesize {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_97 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_98 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_97));
                        suggestions.push((__binding_1, __code_98));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_parenthesize);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1424pub(crate) enum ComparisonOperatorsCannotBeChainedSugg {
1425    #[suggestion(
1426        parse_sugg_split_comparison,
1427        style = "verbose",
1428        code = " && {middle_term}",
1429        applicability = "maybe-incorrect"
1430    )]
1431    SplitComparison {
1432        #[primary_span]
1433        span: Span,
1434        middle_term: String,
1435    },
1436    #[multipart_suggestion(parse_sugg_parenthesize, applicability = "maybe-incorrect")]
1437    Parenthesize {
1438        #[suggestion_part(code = "(")]
1439        left: Span,
1440        #[suggestion_part(code = ")")]
1441        right: Span,
1442    },
1443}
1444
1445#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            QuestionMarkInType 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 {
                    QuestionMarkInType { span: __binding_0, sugg: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_question_mark_in_type);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1446#[diag(parse_question_mark_in_type)]
1447pub(crate) struct QuestionMarkInType {
1448    #[primary_span]
1449    #[label]
1450    pub span: Span,
1451    #[subdiagnostic]
1452    pub sugg: QuestionMarkInTypeSugg,
1453}
1454
1455#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for QuestionMarkInTypeSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    QuestionMarkInTypeSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_99 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("Option<"))
                                });
                        let __code_100 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(">"))
                                });
                        suggestions.push((__binding_0, __code_99));
                        suggestions.push((__binding_1, __code_100));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1456#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1457pub(crate) struct QuestionMarkInTypeSugg {
1458    #[suggestion_part(code = "Option<")]
1459    pub left: Span,
1460    #[suggestion_part(code = ">")]
1461    pub right: Span,
1462}
1463
1464#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ParenthesesInForHead 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 {
                    ParenthesesInForHead { span: __binding_0, sugg: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_parentheses_in_for_head);
                        ;
                        diag.span(__binding_0.clone());
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1465#[diag(parse_unexpected_parentheses_in_for_head)]
1466pub(crate) struct ParenthesesInForHead {
1467    #[primary_span]
1468    pub span: Vec<Span>,
1469    #[subdiagnostic]
1470    pub sugg: ParenthesesInForHeadSugg,
1471}
1472
1473#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ParenthesesInForHeadSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ParenthesesInForHeadSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_101 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" "))
                                });
                        let __code_102 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" "))
                                });
                        suggestions.push((__binding_0, __code_101));
                        suggestions.push((__binding_1, __code_102));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1474#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1475pub(crate) struct ParenthesesInForHeadSugg {
1476    #[suggestion_part(code = " ")]
1477    pub left: Span,
1478    #[suggestion_part(code = " ")]
1479    pub right: Span,
1480}
1481
1482#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ParenthesesInMatchPat 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 {
                    ParenthesesInMatchPat { span: __binding_0, sugg: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_parentheses_in_match_arm_pattern);
                        ;
                        diag.span(__binding_0.clone());
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1483#[diag(parse_unexpected_parentheses_in_match_arm_pattern)]
1484pub(crate) struct ParenthesesInMatchPat {
1485    #[primary_span]
1486    pub span: Vec<Span>,
1487    #[subdiagnostic]
1488    pub sugg: ParenthesesInMatchPatSugg,
1489}
1490
1491#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ParenthesesInMatchPatSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ParenthesesInMatchPatSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_103 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_104 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_103));
                        suggestions.push((__binding_1, __code_104));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1492#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1493pub(crate) struct ParenthesesInMatchPatSugg {
1494    #[suggestion_part(code = "")]
1495    pub left: Span,
1496    #[suggestion_part(code = "")]
1497    pub right: Span,
1498}
1499
1500#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DocCommentOnParamType 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 {
                    DocCommentOnParamType { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_doc_comment_on_param_type);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1501#[diag(parse_doc_comment_on_param_type)]
1502pub(crate) struct DocCommentOnParamType {
1503    #[primary_span]
1504    #[label]
1505    pub span: Span,
1506}
1507
1508#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttributeOnParamType 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 {
                    AttributeOnParamType { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_attribute_on_param_type);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1509#[diag(parse_attribute_on_param_type)]
1510pub(crate) struct AttributeOnParamType {
1511    #[primary_span]
1512    #[label]
1513    pub span: Span,
1514}
1515
1516#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttributeOnType 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 {
                    AttributeOnType { span: __binding_0, fix_span: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_attribute_on_type);
                        let __code_105 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_105,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1517#[diag(parse_attribute_on_type)]
1518pub(crate) struct AttributeOnType {
1519    #[primary_span]
1520    #[label]
1521    pub span: Span,
1522    #[suggestion(code = "", applicability = "machine-applicable", style = "tool-only")]
1523    pub fix_span: Span,
1524}
1525
1526#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttributeOnGenericArg 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 {
                    AttributeOnGenericArg {
                        span: __binding_0, fix_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_attribute_on_generic_arg);
                        let __code_106 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_106,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1527#[diag(parse_attribute_on_generic_arg)]
1528pub(crate) struct AttributeOnGenericArg {
1529    #[primary_span]
1530    #[label]
1531    pub span: Span,
1532    #[suggestion(code = "", applicability = "machine-applicable", style = "tool-only")]
1533    pub fix_span: Span,
1534}
1535
1536#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttributeOnEmptyType 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 {
                    AttributeOnEmptyType { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_attribute_on_empty_type);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1537#[diag(parse_attribute_on_empty_type)]
1538pub(crate) struct AttributeOnEmptyType {
1539    #[primary_span]
1540    #[label]
1541    pub span: Span,
1542}
1543
1544#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PatternMethodParamWithoutBody 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 {
                    PatternMethodParamWithoutBody { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_pattern_method_param_without_body);
                        let __code_107 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("_"))
                                            })].into_iter();
                        diag.code(E0642);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_107,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1545#[diag(parse_pattern_method_param_without_body, code = E0642)]
1546pub(crate) struct PatternMethodParamWithoutBody {
1547    #[primary_span]
1548    #[suggestion(code = "_", applicability = "machine-applicable", style = "verbose")]
1549    pub span: Span,
1550}
1551
1552#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            SelfParamNotFirst 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 {
                    SelfParamNotFirst { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_self_param_not_first);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1553#[diag(parse_self_param_not_first)]
1554pub(crate) struct SelfParamNotFirst {
1555    #[primary_span]
1556    #[label]
1557    pub span: Span,
1558}
1559
1560#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConstGenericWithoutBraces 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 {
                    ConstGenericWithoutBraces {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_const_generic_without_braces);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1561#[diag(parse_const_generic_without_braces)]
1562pub(crate) struct ConstGenericWithoutBraces {
1563    #[primary_span]
1564    pub span: Span,
1565    #[subdiagnostic]
1566    pub sugg: ConstGenericWithoutBracesSugg,
1567}
1568
1569#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ConstGenericWithoutBracesSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ConstGenericWithoutBracesSugg {
                        left: __binding_0, right: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_108 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{ "))
                                });
                        let __code_109 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_108));
                        suggestions.push((__binding_1, __code_109));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1570#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1571pub(crate) struct ConstGenericWithoutBracesSugg {
1572    #[suggestion_part(code = "{{ ")]
1573    pub left: Span,
1574    #[suggestion_part(code = " }}")]
1575    pub right: Span,
1576}
1577
1578#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedConstParamDeclaration 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 {
                    UnexpectedConstParamDeclaration {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_const_param_declaration);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1579#[diag(parse_unexpected_const_param_declaration)]
1580pub(crate) struct UnexpectedConstParamDeclaration {
1581    #[primary_span]
1582    #[label]
1583    pub span: Span,
1584    #[subdiagnostic]
1585    pub sugg: Option<UnexpectedConstParamDeclarationSugg>,
1586}
1587
1588#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            UnexpectedConstParamDeclarationSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedConstParamDeclarationSugg::AddParam {
                        impl_generics: __binding_0,
                        incorrect_decl: __binding_1,
                        snippet: __binding_2,
                        ident: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_110 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("<{0}>", __binding_2))
                                });
                        let __code_111 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_3))
                                });
                        suggestions.push((__binding_0, __code_110));
                        suggestions.push((__binding_1, __code_111));
                        diag.store_args();
                        diag.arg("snippet", __binding_2);
                        diag.arg("ident", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    UnexpectedConstParamDeclarationSugg::AppendParam {
                        impl_generics_end: __binding_0,
                        incorrect_decl: __binding_1,
                        snippet: __binding_2,
                        ident: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_112 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(", {0}", __binding_2))
                                });
                        let __code_113 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_3))
                                });
                        suggestions.push((__binding_0, __code_112));
                        suggestions.push((__binding_1, __code_113));
                        diag.store_args();
                        diag.arg("snippet", __binding_2);
                        diag.arg("ident", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1589pub(crate) enum UnexpectedConstParamDeclarationSugg {
1590    #[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1591    AddParam {
1592        #[suggestion_part(code = "<{snippet}>")]
1593        impl_generics: Span,
1594        #[suggestion_part(code = "{ident}")]
1595        incorrect_decl: Span,
1596        snippet: String,
1597        ident: String,
1598    },
1599    #[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1600    AppendParam {
1601        #[suggestion_part(code = ", {snippet}")]
1602        impl_generics_end: Span,
1603        #[suggestion_part(code = "{ident}")]
1604        incorrect_decl: Span,
1605        snippet: String,
1606        ident: String,
1607    },
1608}
1609
1610#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedConstInGenericParam 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 {
                    UnexpectedConstInGenericParam {
                        span: __binding_0, to_remove: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_const_in_generic_param);
                        let __code_114 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::_subdiag::suggestion, __code_114,
                                rustc_errors::Applicability::MaybeIncorrect,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1611#[diag(parse_unexpected_const_in_generic_param)]
1612pub(crate) struct UnexpectedConstInGenericParam {
1613    #[primary_span]
1614    pub span: Span,
1615    #[suggestion(style = "verbose", code = "", applicability = "maybe-incorrect")]
1616    pub to_remove: Option<Span>,
1617}
1618
1619#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsyncMoveOrderIncorrect 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 {
                    AsyncMoveOrderIncorrect { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_move_order_incorrect);
                        let __code_115 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("async move"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_115,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1620#[diag(parse_async_move_order_incorrect)]
1621pub(crate) struct AsyncMoveOrderIncorrect {
1622    #[primary_span]
1623    #[suggestion(style = "verbose", code = "async move", applicability = "maybe-incorrect")]
1624    pub span: Span,
1625}
1626
1627#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsyncUseOrderIncorrect 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 {
                    AsyncUseOrderIncorrect { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_use_order_incorrect);
                        let __code_116 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("async use"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_116,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1628#[diag(parse_async_use_order_incorrect)]
1629pub(crate) struct AsyncUseOrderIncorrect {
1630    #[primary_span]
1631    #[suggestion(style = "verbose", code = "async use", applicability = "maybe-incorrect")]
1632    pub span: Span,
1633}
1634
1635#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DoubleColonInBound 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 {
                    DoubleColonInBound { span: __binding_0, between: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_double_colon_in_bound);
                        let __code_117 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(": "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_117,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1636#[diag(parse_double_colon_in_bound)]
1637pub(crate) struct DoubleColonInBound {
1638    #[primary_span]
1639    pub span: Span,
1640    #[suggestion(code = ": ", applicability = "machine-applicable", style = "verbose")]
1641    pub between: Span,
1642}
1643
1644#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FnPtrWithGenerics 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 {
                    FnPtrWithGenerics { span: __binding_0, sugg: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_fn_ptr_with_generics);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1645#[diag(parse_fn_ptr_with_generics)]
1646pub(crate) struct FnPtrWithGenerics {
1647    #[primary_span]
1648    pub span: Span,
1649    #[subdiagnostic]
1650    pub sugg: Option<FnPtrWithGenericsSugg>,
1651}
1652
1653#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MisplacedReturnType {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MisplacedReturnType {
                        fn_params_end: __binding_0,
                        snippet: __binding_1,
                        ret_ty_span: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_118 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" {0}", __binding_1))
                                });
                        let __code_119 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_118));
                        suggestions.push((__binding_2, __code_119));
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_misplaced_return_type);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1654#[multipart_suggestion(
1655    parse_misplaced_return_type,
1656    style = "verbose",
1657    applicability = "maybe-incorrect"
1658)]
1659pub(crate) struct MisplacedReturnType {
1660    #[suggestion_part(code = " {snippet}")]
1661    pub fn_params_end: Span,
1662    pub snippet: String,
1663    #[suggestion_part(code = "")]
1664    pub ret_ty_span: Span,
1665}
1666
1667#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for FnPtrWithGenericsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FnPtrWithGenericsSugg {
                        left: __binding_0,
                        snippet: __binding_1,
                        right: __binding_2,
                        arity: __binding_3,
                        for_param_list_exists: __binding_4 } => {
                        let mut suggestions = Vec::new();
                        let __code_120 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                });
                        let __code_121 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_120));
                        suggestions.push((__binding_2, __code_121));
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        diag.arg("arity", __binding_3);
                        diag.arg("for_param_list_exists", __binding_4);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1668#[multipart_suggestion(parse_suggestion, applicability = "maybe-incorrect")]
1669pub(crate) struct FnPtrWithGenericsSugg {
1670    #[suggestion_part(code = "{snippet}")]
1671    pub left: Span,
1672    pub snippet: String,
1673    #[suggestion_part(code = "")]
1674    pub right: Span,
1675    pub arity: usize,
1676    pub for_param_list_exists: bool,
1677}
1678
1679pub(crate) struct FnTraitMissingParen {
1680    pub span: Span,
1681}
1682
1683impl Subdiagnostic for FnTraitMissingParen {
1684    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
1685        diag.span_label(self.span, crate::fluent_generated::parse_fn_trait_missing_paren);
1686        diag.span_suggestion_short(
1687            self.span.shrink_to_hi(),
1688            crate::fluent_generated::parse_add_paren,
1689            "()",
1690            Applicability::MachineApplicable,
1691        );
1692    }
1693}
1694
1695#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedIfWithIf 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 {
                    UnexpectedIfWithIf(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_if_with_if);
                        let __code_122 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_122,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1696#[diag(parse_unexpected_if_with_if)]
1697pub(crate) struct UnexpectedIfWithIf(
1698    #[primary_span]
1699    #[suggestion(applicability = "machine-applicable", code = " ", style = "verbose")]
1700    pub Span,
1701);
1702
1703#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for FnTypoWithImpl
            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 {
                    FnTypoWithImpl { fn_span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_maybe_fn_typo_with_impl);
                        let __code_123 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("impl"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_123,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1704#[diag(parse_maybe_fn_typo_with_impl)]
1705pub(crate) struct FnTypoWithImpl {
1706    #[primary_span]
1707    #[suggestion(applicability = "maybe-incorrect", code = "impl", style = "verbose")]
1708    pub fn_span: Span,
1709}
1710
1711#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedFnPathFoundFnKeyword 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 {
                    ExpectedFnPathFoundFnKeyword { fn_token_span: __binding_0 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_fn_path_found_fn_keyword);
                        let __code_124 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("Fn"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_124,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1712#[diag(parse_expected_fn_path_found_fn_keyword)]
1713pub(crate) struct ExpectedFnPathFoundFnKeyword {
1714    #[primary_span]
1715    #[suggestion(applicability = "machine-applicable", code = "Fn", style = "verbose")]
1716    pub fn_token_span: Span,
1717}
1718
1719#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FnPathFoundNamedParams 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 {
                    FnPathFoundNamedParams { named_param_span: __binding_0 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_path_found_named_params);
                        let __code_125 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_125,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1720#[diag(parse_path_found_named_params)]
1721pub(crate) struct FnPathFoundNamedParams {
1722    #[primary_span]
1723    #[suggestion(applicability = "machine-applicable", code = "")]
1724    pub named_param_span: Span,
1725}
1726
1727#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PathFoundCVariadicParams 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 {
                    PathFoundCVariadicParams { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_path_found_c_variadic_params);
                        let __code_126 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_126,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1728#[diag(parse_path_found_c_variadic_params)]
1729pub(crate) struct PathFoundCVariadicParams {
1730    #[primary_span]
1731    #[suggestion(applicability = "machine-applicable", code = "")]
1732    pub span: Span,
1733}
1734
1735#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PathFoundAttributeInParams 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 {
                    PathFoundAttributeInParams { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_path_found_attribute_in_params);
                        let __code_127 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_127,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1736#[diag(parse_path_found_attribute_in_params)]
1737pub(crate) struct PathFoundAttributeInParams {
1738    #[primary_span]
1739    #[suggestion(applicability = "machine-applicable", code = "")]
1740    pub span: Span,
1741}
1742
1743#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PathSingleColon 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 {
                    PathSingleColon { span: __binding_0, suggestion: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_path_double_colon);
                        let __code_128 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(":"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_128,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1744#[diag(parse_path_double_colon)]
1745pub(crate) struct PathSingleColon {
1746    #[primary_span]
1747    pub span: Span,
1748
1749    #[suggestion(applicability = "machine-applicable", code = ":", style = "verbose")]
1750    pub suggestion: Span,
1751}
1752
1753#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PathTripleColon 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 {
                    PathTripleColon { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_path_double_colon);
                        let __code_129 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_129,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1754#[diag(parse_path_double_colon)]
1755pub(crate) struct PathTripleColon {
1756    #[primary_span]
1757    #[suggestion(applicability = "maybe-incorrect", code = "", style = "verbose")]
1758    pub span: Span,
1759}
1760
1761#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ColonAsSemi
            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 {
                    ColonAsSemi { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_colon_as_semi);
                        let __code_130 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(";"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_130,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1762#[diag(parse_colon_as_semi)]
1763pub(crate) struct ColonAsSemi {
1764    #[primary_span]
1765    #[suggestion(applicability = "machine-applicable", code = ";", style = "verbose")]
1766    pub span: Span,
1767}
1768
1769#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            WhereClauseBeforeTupleStructBody 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 {
                    WhereClauseBeforeTupleStructBody {
                        span: __binding_0,
                        name: __binding_1,
                        body: __binding_2,
                        sugg: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_where_clause_before_tuple_struct_body);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_name_label);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_body_label);
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1770#[diag(parse_where_clause_before_tuple_struct_body)]
1771pub(crate) struct WhereClauseBeforeTupleStructBody {
1772    #[primary_span]
1773    #[label]
1774    pub span: Span,
1775    #[label(parse_name_label)]
1776    pub name: Span,
1777    #[label(parse_body_label)]
1778    pub body: Span,
1779    #[subdiagnostic]
1780    pub sugg: Option<WhereClauseBeforeTupleStructBodySugg>,
1781}
1782
1783#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for
            WhereClauseBeforeTupleStructBodySugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    WhereClauseBeforeTupleStructBodySugg {
                        left: __binding_0, snippet: __binding_1, right: __binding_2
                        } => {
                        let mut suggestions = Vec::new();
                        let __code_131 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                });
                        let __code_132 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_131));
                        suggestions.push((__binding_2, __code_132));
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1784#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
1785pub(crate) struct WhereClauseBeforeTupleStructBodySugg {
1786    #[suggestion_part(code = "{snippet}")]
1787    pub left: Span,
1788    pub snippet: String,
1789    #[suggestion_part(code = "")]
1790    pub right: Span,
1791}
1792
1793#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AsyncFnIn2015
            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 {
                    AsyncFnIn2015 { span: __binding_0, help: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_fn_in_2015);
                        diag.code(E0670);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1794#[diag(parse_async_fn_in_2015, code = E0670)]
1795pub(crate) struct AsyncFnIn2015 {
1796    #[primary_span]
1797    #[label]
1798    pub span: Span,
1799    #[subdiagnostic]
1800    pub help: HelpUseLatestEdition,
1801}
1802
1803#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for AsyncBlockIn2015 {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AsyncBlockIn2015 { span: __binding_0 } => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_async_block_in_2015);
                        diag.span_label(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1804#[label(parse_async_block_in_2015)]
1805pub(crate) struct AsyncBlockIn2015 {
1806    #[primary_span]
1807    pub span: Span,
1808}
1809
1810#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsyncMoveBlockIn2015 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 {
                    AsyncMoveBlockIn2015 { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_move_block_in_2015);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1811#[diag(parse_async_move_block_in_2015)]
1812pub(crate) struct AsyncMoveBlockIn2015 {
1813    #[primary_span]
1814    pub span: Span,
1815}
1816
1817#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsyncUseBlockIn2015 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 {
                    AsyncUseBlockIn2015 { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_use_block_in_2015);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1818#[diag(parse_async_use_block_in_2015)]
1819pub(crate) struct AsyncUseBlockIn2015 {
1820    #[primary_span]
1821    pub span: Span,
1822}
1823
1824#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsyncBoundModifierIn2015 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 {
                    AsyncBoundModifierIn2015 {
                        span: __binding_0, help: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_bound_modifier_in_2015);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1825#[diag(parse_async_bound_modifier_in_2015)]
1826pub(crate) struct AsyncBoundModifierIn2015 {
1827    #[primary_span]
1828    pub span: Span,
1829    #[subdiagnostic]
1830    pub help: HelpUseLatestEdition,
1831}
1832
1833#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LetChainPre2024 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 {
                    LetChainPre2024 { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_let_chain_pre_2024);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1834#[diag(parse_let_chain_pre_2024)]
1835pub(crate) struct LetChainPre2024 {
1836    #[primary_span]
1837    pub span: Span,
1838}
1839
1840#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            SelfArgumentPointer 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 {
                    SelfArgumentPointer { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_self_argument_pointer);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1841#[diag(parse_self_argument_pointer)]
1842pub(crate) struct SelfArgumentPointer {
1843    #[primary_span]
1844    #[label]
1845    pub span: Span,
1846}
1847
1848#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedTokenAfterDot 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 {
                    UnexpectedTokenAfterDot {
                        span: __binding_0, actual: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_dot);
                        ;
                        diag.arg("actual", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1849#[diag(parse_unexpected_token_after_dot)]
1850pub(crate) struct UnexpectedTokenAfterDot {
1851    #[primary_span]
1852    pub span: Span,
1853    pub actual: String,
1854}
1855
1856#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            VisibilityNotFollowedByItem 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 {
                    VisibilityNotFollowedByItem {
                        span: __binding_0, vis: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_visibility_not_followed_by_item);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("vis", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1857#[diag(parse_visibility_not_followed_by_item)]
1858#[help]
1859pub(crate) struct VisibilityNotFollowedByItem {
1860    #[primary_span]
1861    #[label]
1862    pub span: Span,
1863    pub vis: Visibility,
1864}
1865
1866#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DefaultNotFollowedByItem 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 {
                    DefaultNotFollowedByItem { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_default_not_followed_by_item);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1867#[diag(parse_default_not_followed_by_item)]
1868#[note]
1869pub(crate) struct DefaultNotFollowedByItem {
1870    #[primary_span]
1871    #[label]
1872    pub span: Span,
1873}
1874
1875#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingKeywordForItemDefinition 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 {
                    MissingKeywordForItemDefinition::Enum {
                        span: __binding_0,
                        insert_span: __binding_1,
                        ident: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_enum_for_enum_definition);
                        let __code_133 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("enum "))
                                            })].into_iter();
                        ;
                        diag.arg("ident", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_133,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    MissingKeywordForItemDefinition::EnumOrStruct {
                        span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_enum_or_struct_for_item_definition);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    MissingKeywordForItemDefinition::Struct {
                        span: __binding_0,
                        insert_span: __binding_1,
                        ident: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_struct_for_struct_definition);
                        let __code_134 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("struct "))
                                            })].into_iter();
                        ;
                        diag.arg("ident", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_134,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    MissingKeywordForItemDefinition::Function {
                        span: __binding_0,
                        insert_span: __binding_1,
                        ident: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_fn_for_function_definition);
                        let __code_135 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("fn "))
                                            })].into_iter();
                        ;
                        diag.arg("ident", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_135,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    MissingKeywordForItemDefinition::Method {
                        span: __binding_0,
                        insert_span: __binding_1,
                        ident: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_fn_for_method_definition);
                        let __code_136 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("fn "))
                                            })].into_iter();
                        ;
                        diag.arg("ident", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_136,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    MissingKeywordForItemDefinition::Ambiguous {
                        span: __binding_0, subdiag: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_fn_or_struct_for_item_definition);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1876pub(crate) enum MissingKeywordForItemDefinition {
1877    #[diag(parse_missing_enum_for_enum_definition)]
1878    Enum {
1879        #[primary_span]
1880        span: Span,
1881        #[suggestion(style = "verbose", applicability = "maybe-incorrect", code = "enum ")]
1882        insert_span: Span,
1883        ident: Ident,
1884    },
1885    #[diag(parse_missing_enum_or_struct_for_item_definition)]
1886    EnumOrStruct {
1887        #[primary_span]
1888        span: Span,
1889    },
1890    #[diag(parse_missing_struct_for_struct_definition)]
1891    Struct {
1892        #[primary_span]
1893        span: Span,
1894        #[suggestion(style = "verbose", applicability = "maybe-incorrect", code = "struct ")]
1895        insert_span: Span,
1896        ident: Ident,
1897    },
1898    #[diag(parse_missing_fn_for_function_definition)]
1899    Function {
1900        #[primary_span]
1901        span: Span,
1902        #[suggestion(style = "verbose", applicability = "maybe-incorrect", code = "fn ")]
1903        insert_span: Span,
1904        ident: Ident,
1905    },
1906    #[diag(parse_missing_fn_for_method_definition)]
1907    Method {
1908        #[primary_span]
1909        span: Span,
1910        #[suggestion(style = "verbose", applicability = "maybe-incorrect", code = "fn ")]
1911        insert_span: Span,
1912        ident: Ident,
1913    },
1914    #[diag(parse_missing_fn_or_struct_for_item_definition)]
1915    Ambiguous {
1916        #[primary_span]
1917        span: Span,
1918        #[subdiagnostic]
1919        subdiag: Option<AmbiguousMissingKwForItemSub>,
1920    },
1921}
1922
1923#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for AmbiguousMissingKwForItemSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AmbiguousMissingKwForItemSub::SuggestMacro {
                        span: __binding_0, snippet: __binding_1 } => {
                        let __code_137 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}!", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_137, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    AmbiguousMissingKwForItemSub::HelpMacro => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_help);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
1924pub(crate) enum AmbiguousMissingKwForItemSub {
1925    #[suggestion(
1926        parse_suggestion,
1927        applicability = "maybe-incorrect",
1928        code = "{snippet}!",
1929        style = "verbose"
1930    )]
1931    SuggestMacro {
1932        #[primary_span]
1933        span: Span,
1934        snippet: String,
1935    },
1936    #[help(parse_help)]
1937    HelpMacro,
1938}
1939
1940#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingFnParams 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 {
                    MissingFnParams { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_fn_params);
                        let __code_138 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("()"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_138,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1941#[diag(parse_missing_fn_params)]
1942pub(crate) struct MissingFnParams {
1943    #[primary_span]
1944    #[suggestion(code = "()", applicability = "machine-applicable", style = "verbose")]
1945    pub span: Span,
1946}
1947
1948#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidPathSepInFnDefinition 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 {
                    InvalidPathSepInFnDefinition { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_path_sep_in_fn_definition);
                        let __code_139 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_139,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1949#[diag(parse_invalid_path_sep_in_fn_definition)]
1950pub(crate) struct InvalidPathSepInFnDefinition {
1951    #[primary_span]
1952    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
1953    pub span: Span,
1954}
1955
1956#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingTraitInTraitImpl 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 {
                    MissingTraitInTraitImpl {
                        span: __binding_0, for_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_trait_in_trait_impl);
                        let __code_140 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" Trait "))
                                            })].into_iter();
                        let __code_141 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_suggestion_add_trait,
                            __code_140, rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::parse_suggestion_remove_for,
                            __code_141, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1957#[diag(parse_missing_trait_in_trait_impl)]
1958pub(crate) struct MissingTraitInTraitImpl {
1959    #[primary_span]
1960    #[suggestion(
1961        parse_suggestion_add_trait,
1962        code = " Trait ",
1963        applicability = "has-placeholders",
1964        style = "verbose"
1965    )]
1966    pub span: Span,
1967    #[suggestion(
1968        parse_suggestion_remove_for,
1969        code = "",
1970        applicability = "maybe-incorrect",
1971        style = "verbose"
1972    )]
1973    pub for_span: Span,
1974}
1975
1976#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingForInTraitImpl 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 {
                    MissingForInTraitImpl { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_for_in_trait_impl);
                        let __code_142 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" for "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_142,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1977#[diag(parse_missing_for_in_trait_impl)]
1978pub(crate) struct MissingForInTraitImpl {
1979    #[primary_span]
1980    #[suggestion(style = "verbose", code = " for ", applicability = "machine-applicable")]
1981    pub span: Span,
1982}
1983
1984#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedTraitInTraitImplFoundType 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 {
                    ExpectedTraitInTraitImplFoundType { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_trait_in_trait_impl_found_type);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1985#[diag(parse_expected_trait_in_trait_impl_found_type)]
1986pub(crate) struct ExpectedTraitInTraitImplFoundType {
1987    #[primary_span]
1988    pub span: Span,
1989}
1990
1991#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExtraImplKeywordInTraitImpl 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 {
                    ExtraImplKeywordInTraitImpl {
                        extra_impl_kw: __binding_0, impl_trait_span: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_extra_impl_keyword_in_trait_impl);
                        let __code_143 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_143,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
1992#[diag(parse_extra_impl_keyword_in_trait_impl)]
1993pub(crate) struct ExtraImplKeywordInTraitImpl {
1994    #[primary_span]
1995    #[suggestion(code = "", applicability = "maybe-incorrect", style = "short")]
1996    pub extra_impl_kw: Span,
1997    #[note]
1998    pub impl_trait_span: Span,
1999}
2000
2001#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BoundsNotAllowedOnTraitAliases 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 {
                    BoundsNotAllowedOnTraitAliases { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bounds_not_allowed_on_trait_aliases);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2002#[diag(parse_bounds_not_allowed_on_trait_aliases)]
2003pub(crate) struct BoundsNotAllowedOnTraitAliases {
2004    #[primary_span]
2005    pub span: Span,
2006}
2007
2008#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TraitAliasCannotBeAuto 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 {
                    TraitAliasCannotBeAuto { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_trait_alias_cannot_be_auto);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_trait_alias_cannot_be_auto);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2009#[diag(parse_trait_alias_cannot_be_auto)]
2010pub(crate) struct TraitAliasCannotBeAuto {
2011    #[primary_span]
2012    #[label(parse_trait_alias_cannot_be_auto)]
2013    pub span: Span,
2014}
2015
2016#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TraitAliasCannotBeUnsafe 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 {
                    TraitAliasCannotBeUnsafe { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_trait_alias_cannot_be_unsafe);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_trait_alias_cannot_be_unsafe);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2017#[diag(parse_trait_alias_cannot_be_unsafe)]
2018pub(crate) struct TraitAliasCannotBeUnsafe {
2019    #[primary_span]
2020    #[label(parse_trait_alias_cannot_be_unsafe)]
2021    pub span: Span,
2022}
2023
2024#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AssociatedStaticItemNotAllowed 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 {
                    AssociatedStaticItemNotAllowed { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_associated_static_item_not_allowed);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2025#[diag(parse_associated_static_item_not_allowed)]
2026pub(crate) struct AssociatedStaticItemNotAllowed {
2027    #[primary_span]
2028    pub span: Span,
2029}
2030
2031#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExternCrateNameWithDashes 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 {
                    ExternCrateNameWithDashes {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_extern_crate_name_with_dashes);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2032#[diag(parse_extern_crate_name_with_dashes)]
2033pub(crate) struct ExternCrateNameWithDashes {
2034    #[primary_span]
2035    #[label]
2036    pub span: Span,
2037    #[subdiagnostic]
2038    pub sugg: ExternCrateNameWithDashesSugg,
2039}
2040
2041#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ExternCrateNameWithDashesSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ExternCrateNameWithDashesSugg { dashes: __binding_0 } => {
                        let mut suggestions = Vec::new();
                        let __code_144 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("_"))
                                });
                        for __binding_0 in __binding_0 {
                            suggestions.push((__binding_0, __code_144.clone()));
                        }
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2042#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
2043pub(crate) struct ExternCrateNameWithDashesSugg {
2044    #[suggestion_part(code = "_")]
2045    pub dashes: Vec<Span>,
2046}
2047
2048#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExternItemCannotBeConst 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 {
                    ExternItemCannotBeConst {
                        ident_span: __binding_0, const_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_extern_item_cannot_be_const);
                        let __code_145 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("static "))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::_subdiag::suggestion, __code_145,
                                rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2049#[diag(parse_extern_item_cannot_be_const)]
2050#[note]
2051pub(crate) struct ExternItemCannotBeConst {
2052    #[primary_span]
2053    pub ident_span: Span,
2054    #[suggestion(code = "static ", applicability = "machine-applicable", style = "verbose")]
2055    pub const_span: Option<Span>,
2056}
2057
2058#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ConstGlobalCannotBeMutable 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 {
                    ConstGlobalCannotBeMutable {
                        ident_span: __binding_0, const_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_const_global_cannot_be_mutable);
                        let __code_146 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("static"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_146,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2059#[diag(parse_const_global_cannot_be_mutable)]
2060pub(crate) struct ConstGlobalCannotBeMutable {
2061    #[primary_span]
2062    #[label]
2063    pub ident_span: Span,
2064    #[suggestion(code = "static", style = "verbose", applicability = "maybe-incorrect")]
2065    pub const_span: Span,
2066}
2067
2068#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingConstType 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 {
                    MissingConstType {
                        span: __binding_0, kind: __binding_1, colon: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_const_type);
                        let __code_147 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0} <type>",
                                                        __binding_2))
                                            })].into_iter();
                        ;
                        diag.arg("kind", __binding_1);
                        diag.arg("colon", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_147,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2069#[diag(parse_missing_const_type)]
2070pub(crate) struct MissingConstType {
2071    #[primary_span]
2072    #[suggestion(code = "{colon} <type>", style = "verbose", applicability = "has-placeholders")]
2073    pub span: Span,
2074
2075    pub kind: &'static str,
2076    pub colon: &'static str,
2077}
2078
2079#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EnumStructMutuallyExclusive 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 {
                    EnumStructMutuallyExclusive { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_enum_struct_mutually_exclusive);
                        let __code_148 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("enum"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_148,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2080#[diag(parse_enum_struct_mutually_exclusive)]
2081pub(crate) struct EnumStructMutuallyExclusive {
2082    #[primary_span]
2083    #[suggestion(code = "enum", style = "verbose", applicability = "machine-applicable")]
2084    pub span: Span,
2085}
2086
2087#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedTokenAfterStructName 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 {
                    UnexpectedTokenAfterStructName::ReservedIdentifier {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_struct_name_found_reserved_identifier);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_struct_name);
                        diag
                    }
                    UnexpectedTokenAfterStructName::Keyword {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_struct_name_found_keyword);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_struct_name);
                        diag
                    }
                    UnexpectedTokenAfterStructName::ReservedKeyword {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_struct_name_found_reserved_keyword);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_struct_name);
                        diag
                    }
                    UnexpectedTokenAfterStructName::DocComment {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_struct_name_found_doc_comment);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_struct_name);
                        diag
                    }
                    UnexpectedTokenAfterStructName::MetaVar { span: __binding_0
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_struct_name_found_metavar);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_struct_name);
                        diag
                    }
                    UnexpectedTokenAfterStructName::Other {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_token_after_struct_name_found_other);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_unexpected_token_after_struct_name);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2088pub(crate) enum UnexpectedTokenAfterStructName {
2089    #[diag(parse_unexpected_token_after_struct_name_found_reserved_identifier)]
2090    ReservedIdentifier {
2091        #[primary_span]
2092        #[label(parse_unexpected_token_after_struct_name)]
2093        span: Span,
2094        token: Token,
2095    },
2096    #[diag(parse_unexpected_token_after_struct_name_found_keyword)]
2097    Keyword {
2098        #[primary_span]
2099        #[label(parse_unexpected_token_after_struct_name)]
2100        span: Span,
2101        token: Token,
2102    },
2103    #[diag(parse_unexpected_token_after_struct_name_found_reserved_keyword)]
2104    ReservedKeyword {
2105        #[primary_span]
2106        #[label(parse_unexpected_token_after_struct_name)]
2107        span: Span,
2108        token: Token,
2109    },
2110    #[diag(parse_unexpected_token_after_struct_name_found_doc_comment)]
2111    DocComment {
2112        #[primary_span]
2113        #[label(parse_unexpected_token_after_struct_name)]
2114        span: Span,
2115        token: Token,
2116    },
2117    #[diag(parse_unexpected_token_after_struct_name_found_metavar)]
2118    MetaVar {
2119        #[primary_span]
2120        #[label(parse_unexpected_token_after_struct_name)]
2121        span: Span,
2122    },
2123    #[diag(parse_unexpected_token_after_struct_name_found_other)]
2124    Other {
2125        #[primary_span]
2126        #[label(parse_unexpected_token_after_struct_name)]
2127        span: Span,
2128        token: Token,
2129    },
2130}
2131
2132impl UnexpectedTokenAfterStructName {
2133    pub(crate) fn new(span: Span, token: Token) -> Self {
2134        match TokenDescription::from_token(&token) {
2135            Some(TokenDescription::ReservedIdentifier) => Self::ReservedIdentifier { span, token },
2136            Some(TokenDescription::Keyword) => Self::Keyword { span, token },
2137            Some(TokenDescription::ReservedKeyword) => Self::ReservedKeyword { span, token },
2138            Some(TokenDescription::DocComment) => Self::DocComment { span, token },
2139            Some(TokenDescription::MetaVar(_)) => Self::MetaVar { span },
2140            None => Self::Other { span, token },
2141        }
2142    }
2143}
2144
2145#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedSelfInGenericParameters 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 {
                    UnexpectedSelfInGenericParameters { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_self_in_generic_parameters);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2146#[diag(parse_unexpected_self_in_generic_parameters)]
2147#[note]
2148pub(crate) struct UnexpectedSelfInGenericParameters {
2149    #[primary_span]
2150    pub span: Span,
2151}
2152
2153#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedDefaultValueForLifetimeInGenericParameters 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 {
                    UnexpectedDefaultValueForLifetimeInGenericParameters {
                        span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_default_value_for_lifetime_in_generic_parameters);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2154#[diag(parse_unexpected_default_value_for_lifetime_in_generic_parameters)]
2155pub(crate) struct UnexpectedDefaultValueForLifetimeInGenericParameters {
2156    #[primary_span]
2157    #[label]
2158    pub span: Span,
2159}
2160
2161#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MultipleWhereClauses 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 {
                    MultipleWhereClauses {
                        span: __binding_0,
                        previous: __binding_1,
                        between: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_multiple_where_clauses);
                        let __code_149 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(","))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::_subdiag::suggestion, __code_149,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2162#[diag(parse_multiple_where_clauses)]
2163pub(crate) struct MultipleWhereClauses {
2164    #[primary_span]
2165    pub span: Span,
2166    #[label]
2167    pub previous: Span,
2168    #[suggestion(style = "verbose", code = ",", applicability = "maybe-incorrect")]
2169    pub between: Span,
2170}
2171
2172#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedNonterminal 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 {
                    UnexpectedNonterminal::Item(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nonterminal_expected_item_keyword);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    UnexpectedNonterminal::Statement(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nonterminal_expected_statement);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    UnexpectedNonterminal::Ident {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nonterminal_expected_ident);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                    UnexpectedNonterminal::Lifetime {
                        span: __binding_0, token: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nonterminal_expected_lifetime);
                        ;
                        diag.arg("token", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2173pub(crate) enum UnexpectedNonterminal {
2174    #[diag(parse_nonterminal_expected_item_keyword)]
2175    Item(#[primary_span] Span),
2176    #[diag(parse_nonterminal_expected_statement)]
2177    Statement(#[primary_span] Span),
2178    #[diag(parse_nonterminal_expected_ident)]
2179    Ident {
2180        #[primary_span]
2181        span: Span,
2182        token: Token,
2183    },
2184    #[diag(parse_nonterminal_expected_lifetime)]
2185    Lifetime {
2186        #[primary_span]
2187        span: Span,
2188        token: Token,
2189    },
2190}
2191
2192#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TopLevelOrPatternNotAllowed 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 {
                    TopLevelOrPatternNotAllowed::LetBinding {
                        span: __binding_0, sub: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_or_pattern_not_allowed_in_let_binding);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                    TopLevelOrPatternNotAllowed::FunctionParameter {
                        span: __binding_0, sub: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_or_pattern_not_allowed_in_fn_parameters);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2193pub(crate) enum TopLevelOrPatternNotAllowed {
2194    #[diag(parse_or_pattern_not_allowed_in_let_binding)]
2195    LetBinding {
2196        #[primary_span]
2197        span: Span,
2198        #[subdiagnostic]
2199        sub: Option<TopLevelOrPatternNotAllowedSugg>,
2200    },
2201    #[diag(parse_or_pattern_not_allowed_in_fn_parameters)]
2202    FunctionParameter {
2203        #[primary_span]
2204        span: Span,
2205        #[subdiagnostic]
2206        sub: Option<TopLevelOrPatternNotAllowedSugg>,
2207    },
2208}
2209
2210#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CannotBeRawIdent 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 {
                    CannotBeRawIdent { span: __binding_0, ident: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_cannot_be_raw_ident);
                        ;
                        diag.arg("ident", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2211#[diag(parse_cannot_be_raw_ident)]
2212pub(crate) struct CannotBeRawIdent {
2213    #[primary_span]
2214    pub span: Span,
2215    pub ident: Symbol,
2216}
2217
2218#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            CannotBeRawLifetime 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 {
                    CannotBeRawLifetime { span: __binding_0, ident: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_cannot_be_raw_lifetime);
                        ;
                        diag.arg("ident", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2219#[diag(parse_cannot_be_raw_lifetime)]
2220pub(crate) struct CannotBeRawLifetime {
2221    #[primary_span]
2222    pub span: Span,
2223    pub ident: Symbol,
2224}
2225
2226#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            KeywordLifetime 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 {
                    KeywordLifetime { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_keyword_lifetime);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2227#[diag(parse_keyword_lifetime)]
2228pub(crate) struct KeywordLifetime {
2229    #[primary_span]
2230    pub span: Span,
2231}
2232
2233#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for KeywordLabel
            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 {
                    KeywordLabel { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_keyword_label);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2234#[diag(parse_keyword_label)]
2235pub(crate) struct KeywordLabel {
2236    #[primary_span]
2237    pub span: Span,
2238}
2239
2240#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for CrDocComment
            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 {
                    CrDocComment { span: __binding_0, block: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_cr_doc_comment);
                        ;
                        diag.arg("block", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2241#[diag(parse_cr_doc_comment)]
2242pub(crate) struct CrDocComment {
2243    #[primary_span]
2244    pub span: Span,
2245    pub block: bool,
2246}
2247
2248#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NoDigitsLiteral 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 {
                    NoDigitsLiteral { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_no_digits_literal);
                        diag.code(E0768);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2249#[diag(parse_no_digits_literal, code = E0768)]
2250pub(crate) struct NoDigitsLiteral {
2251    #[primary_span]
2252    pub span: Span,
2253}
2254
2255#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidDigitLiteral 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 {
                    InvalidDigitLiteral { span: __binding_0, base: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_digit_literal);
                        ;
                        diag.arg("base", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2256#[diag(parse_invalid_digit_literal)]
2257pub(crate) struct InvalidDigitLiteral {
2258    #[primary_span]
2259    pub span: Span,
2260    pub base: u32,
2261}
2262
2263#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EmptyExponentFloat 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 {
                    EmptyExponentFloat { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_empty_exponent_float);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2264#[diag(parse_empty_exponent_float)]
2265pub(crate) struct EmptyExponentFloat {
2266    #[primary_span]
2267    pub span: Span,
2268}
2269
2270#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FloatLiteralUnsupportedBase 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 {
                    FloatLiteralUnsupportedBase {
                        span: __binding_0, base: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_float_literal_unsupported_base);
                        ;
                        diag.arg("base", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2271#[diag(parse_float_literal_unsupported_base)]
2272pub(crate) struct FloatLiteralUnsupportedBase {
2273    #[primary_span]
2274    pub span: Span,
2275    pub base: &'static str,
2276}
2277
2278#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            UnknownPrefix<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    UnknownPrefix {
                        span: __binding_0, prefix: __binding_1, sugg: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unknown_prefix);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("prefix", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2279#[diag(parse_unknown_prefix)]
2280#[note]
2281pub(crate) struct UnknownPrefix<'a> {
2282    #[primary_span]
2283    #[label]
2284    pub span: Span,
2285    pub prefix: &'a str,
2286    #[subdiagnostic]
2287    pub sugg: Option<UnknownPrefixSugg>,
2288}
2289
2290#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for MacroExpandsToAdtField<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MacroExpandsToAdtField { adt_ty: __binding_0 } => {
                        diag.store_args();
                        diag.arg("adt_ty", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_macro_expands_to_adt_field);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2291#[note(parse_macro_expands_to_adt_field)]
2292pub(crate) struct MacroExpandsToAdtField<'a> {
2293    pub adt_ty: &'a str,
2294}
2295
2296#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnknownPrefixSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnknownPrefixSugg::UseBr(__binding_0) => {
                        let __code_150 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("br"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_br);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_150, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    UnknownPrefixSugg::UseCr(__binding_0) => {
                        let __code_151 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("cr"))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_cr);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_151, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    UnknownPrefixSugg::Whitespace(__binding_0) => {
                        let __code_152 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_whitespace);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_152, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    UnknownPrefixSugg::MeantStr {
                        start: __binding_0, end: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_153 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("\""))
                                });
                        let __code_154 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("\""))
                                });
                        suggestions.push((__binding_0, __code_153));
                        suggestions.push((__binding_1, __code_154));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_str);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2297pub(crate) enum UnknownPrefixSugg {
2298    #[suggestion(
2299        parse_suggestion_br,
2300        code = "br",
2301        applicability = "maybe-incorrect",
2302        style = "verbose"
2303    )]
2304    UseBr(#[primary_span] Span),
2305    #[suggestion(
2306        parse_suggestion_cr,
2307        code = "cr",
2308        applicability = "maybe-incorrect",
2309        style = "verbose"
2310    )]
2311    UseCr(#[primary_span] Span),
2312    #[suggestion(
2313        parse_suggestion_whitespace,
2314        code = " ",
2315        applicability = "maybe-incorrect",
2316        style = "verbose"
2317    )]
2318    Whitespace(#[primary_span] Span),
2319    #[multipart_suggestion(
2320        parse_suggestion_str,
2321        applicability = "maybe-incorrect",
2322        style = "verbose"
2323    )]
2324    MeantStr {
2325        #[suggestion_part(code = "\"")]
2326        start: Span,
2327        #[suggestion_part(code = "\"")]
2328        end: Span,
2329    },
2330}
2331
2332#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ReservedMultihash 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 {
                    ReservedMultihash { span: __binding_0, sugg: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_reserved_multihash);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2333#[diag(parse_reserved_multihash)]
2334#[note]
2335pub(crate) struct ReservedMultihash {
2336    #[primary_span]
2337    pub span: Span,
2338    #[subdiagnostic]
2339    pub sugg: Option<GuardedStringSugg>,
2340}
2341#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ReservedString
            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 {
                    ReservedString { span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_reserved_string);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2342#[diag(parse_reserved_string)]
2343#[note]
2344pub(crate) struct ReservedString {
2345    #[primary_span]
2346    pub span: Span,
2347    #[subdiagnostic]
2348    pub sugg: Option<GuardedStringSugg>,
2349}
2350#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for GuardedStringSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    GuardedStringSugg(__binding_0) => {
                        let __code_155 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" "))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion_whitespace);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_155, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2351#[suggestion(
2352    parse_suggestion_whitespace,
2353    code = " ",
2354    applicability = "maybe-incorrect",
2355    style = "verbose"
2356)]
2357pub(crate) struct GuardedStringSugg(#[primary_span] pub Span);
2358
2359#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for TooManyHashes
            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 {
                    TooManyHashes { span: __binding_0, num: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_too_many_hashes);
                        ;
                        diag.arg("num", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2360#[diag(parse_too_many_hashes)]
2361pub(crate) struct TooManyHashes {
2362    #[primary_span]
2363    pub span: Span,
2364    pub num: u32,
2365}
2366
2367#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnknownTokenStart 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 {
                    UnknownTokenStart {
                        span: __binding_0,
                        escaped: __binding_1,
                        sugg: __binding_2,
                        null: __binding_3,
                        repeat: __binding_4,
                        invisible: __binding_5 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unknown_start_of_token);
                        ;
                        diag.arg("escaped", __binding_1);
                        diag.span(__binding_0);
                        if let Some(__binding_2) = __binding_2 {
                            diag.subdiagnostic(__binding_2);
                        }
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        if let Some(__binding_4) = __binding_4 {
                            diag.subdiagnostic(__binding_4);
                        }
                        if let Some(__binding_5) = __binding_5 {
                            diag.subdiagnostic(__binding_5);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2368#[diag(parse_unknown_start_of_token)]
2369pub(crate) struct UnknownTokenStart {
2370    #[primary_span]
2371    pub span: Span,
2372    pub escaped: String,
2373    #[subdiagnostic]
2374    pub sugg: Option<TokenSubstitution>,
2375    #[subdiagnostic]
2376    pub null: Option<UnknownTokenNull>,
2377    #[subdiagnostic]
2378    pub repeat: Option<UnknownTokenRepeat>,
2379    #[subdiagnostic]
2380    pub invisible: Option<InvisibleCharacter>,
2381}
2382
2383#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for TokenSubstitution {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    TokenSubstitution::DirectedQuotes {
                        span: __binding_0,
                        suggestion: __binding_1,
                        ascii_str: __binding_2,
                        ascii_name: __binding_3 } => {
                        let __code_156 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("suggestion", __binding_1);
                        diag.arg("ascii_str", __binding_2);
                        diag.arg("ascii_name", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_quotes);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_156, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    TokenSubstitution::Other {
                        span: __binding_0,
                        suggestion: __binding_1,
                        ch: __binding_2,
                        u_name: __binding_3,
                        ascii_str: __binding_4,
                        ascii_name: __binding_5 } => {
                        let __code_157 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("suggestion", __binding_1);
                        diag.arg("ch", __binding_2);
                        diag.arg("u_name", __binding_3);
                        diag.arg("ascii_str", __binding_4);
                        diag.arg("ascii_name", __binding_5);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_other);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_157, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2384pub(crate) enum TokenSubstitution {
2385    #[suggestion(
2386        parse_sugg_quotes,
2387        code = "{suggestion}",
2388        applicability = "maybe-incorrect",
2389        style = "verbose"
2390    )]
2391    DirectedQuotes {
2392        #[primary_span]
2393        span: Span,
2394        suggestion: String,
2395        ascii_str: &'static str,
2396        ascii_name: &'static str,
2397    },
2398    #[suggestion(
2399        parse_sugg_other,
2400        code = "{suggestion}",
2401        applicability = "maybe-incorrect",
2402        style = "verbose"
2403    )]
2404    Other {
2405        #[primary_span]
2406        span: Span,
2407        suggestion: String,
2408        ch: String,
2409        u_name: &'static str,
2410        ascii_str: &'static str,
2411        ascii_name: &'static str,
2412    },
2413}
2414
2415#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnknownTokenRepeat {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnknownTokenRepeat { repeats: __binding_0 } => {
                        diag.store_args();
                        diag.arg("repeats", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_note_repeats);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2416#[note(parse_note_repeats)]
2417pub(crate) struct UnknownTokenRepeat {
2418    pub repeats: usize,
2419}
2420
2421#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for InvisibleCharacter {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    InvisibleCharacter => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_help_invisible_char);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2422#[help(parse_help_invisible_char)]
2423pub(crate) struct InvisibleCharacter;
2424
2425#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnknownTokenNull {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnknownTokenNull => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_help_null);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2426#[help(parse_help_null)]
2427pub(crate) struct UnknownTokenNull;
2428
2429#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for UnescapeError
            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 {
                    UnescapeError::InvalidUnicodeEscape {
                        span: __binding_0, surrogate: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_unicode_escape);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("surrogate", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::EscapeOnlyChar {
                        span: __binding_0,
                        char_span: __binding_1,
                        escaped_sugg: __binding_2,
                        escaped_msg: __binding_3,
                        byte: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_escape_only_char);
                        let __code_158 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        ;
                        diag.arg("escaped_sugg", __binding_2);
                        diag.arg("escaped_msg", __binding_3);
                        diag.arg("byte", __binding_4);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::parse_escape, __code_158,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    UnescapeError::BareCr {
                        span: __binding_0, double_quotes: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bare_cr);
                        let __code_159 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\\r"))
                                            })].into_iter();
                        ;
                        diag.arg("double_quotes", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::parse_escape, __code_159,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    UnescapeError::BareCrRawString(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bare_cr_in_raw_string);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    UnescapeError::TooShortHexEscape(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_too_short_hex_escape);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                    UnescapeError::InvalidCharInEscape {
                        span: __binding_0, is_hex: __binding_1, ch: __binding_2 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_char_in_escape);
                        ;
                        diag.arg("is_hex", __binding_1);
                        diag.arg("ch", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::LeadingUnderscoreUnicodeEscape {
                        span: __binding_0, ch: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_leading_underscore_unicode_escape);
                        ;
                        diag.arg("ch", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_leading_underscore_unicode_escape_label);
                        diag
                    }
                    UnescapeError::OverlongUnicodeEscape(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_overlong_unicode_escape);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::UnclosedUnicodeEscape(__binding_0,
                        __binding_1) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unclosed_unicode_escape);
                        let __code_160 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("}}"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::parse_terminate, __code_160,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    UnescapeError::NoBraceInUnicodeEscape {
                        span: __binding_0, label: __binding_1, sub: __binding_2 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_no_brace_unicode_escape);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_label(__binding_1,
                                crate::fluent_generated::_subdiag::label);
                        }
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                    UnescapeError::UnicodeEscapeInByte(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unicode_escape_in_byte);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::EmptyUnicodeEscape(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_empty_unicode_escape);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::ZeroChars(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_zero_chars);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::LoneSlash(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_lone_slash);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::UnskippedWhitespace {
                        span: __binding_0, char_span: __binding_1, ch: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unskipped_whitespace);
                        ;
                        diag.arg("ch", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::MultipleSkippedLinesWarning(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_multiple_skipped_lines);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                    UnescapeError::MoreThanOneChar {
                        span: __binding_0,
                        note: __binding_1,
                        suggestion: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_more_than_one_char);
                        ;
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.subdiagnostic(__binding_1);
                        }
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                    UnescapeError::NulInCStr { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nul_in_c_str);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2430pub(crate) enum UnescapeError {
2431    #[diag(parse_invalid_unicode_escape)]
2432    #[help]
2433    InvalidUnicodeEscape {
2434        #[primary_span]
2435        #[label]
2436        span: Span,
2437        surrogate: bool,
2438    },
2439    #[diag(parse_escape_only_char)]
2440    EscapeOnlyChar {
2441        #[primary_span]
2442        span: Span,
2443        #[suggestion(
2444            parse_escape,
2445            applicability = "machine-applicable",
2446            code = "{escaped_sugg}",
2447            style = "verbose"
2448        )]
2449        char_span: Span,
2450        escaped_sugg: String,
2451        escaped_msg: String,
2452        byte: bool,
2453    },
2454    #[diag(parse_bare_cr)]
2455    BareCr {
2456        #[primary_span]
2457        #[suggestion(
2458            parse_escape,
2459            applicability = "machine-applicable",
2460            code = "\\r",
2461            style = "verbose"
2462        )]
2463        span: Span,
2464        double_quotes: bool,
2465    },
2466    #[diag(parse_bare_cr_in_raw_string)]
2467    BareCrRawString(#[primary_span] Span),
2468    #[diag(parse_too_short_hex_escape)]
2469    TooShortHexEscape(#[primary_span] Span),
2470    #[diag(parse_invalid_char_in_escape)]
2471    InvalidCharInEscape {
2472        #[primary_span]
2473        #[label]
2474        span: Span,
2475        is_hex: bool,
2476        ch: String,
2477    },
2478    #[diag(parse_leading_underscore_unicode_escape)]
2479    LeadingUnderscoreUnicodeEscape {
2480        #[primary_span]
2481        #[label(parse_leading_underscore_unicode_escape_label)]
2482        span: Span,
2483        ch: String,
2484    },
2485    #[diag(parse_overlong_unicode_escape)]
2486    OverlongUnicodeEscape(
2487        #[primary_span]
2488        #[label]
2489        Span,
2490    ),
2491    #[diag(parse_unclosed_unicode_escape)]
2492    UnclosedUnicodeEscape(
2493        #[primary_span]
2494        #[label]
2495        Span,
2496        #[suggestion(
2497            parse_terminate,
2498            code = "}}",
2499            applicability = "maybe-incorrect",
2500            style = "verbose"
2501        )]
2502        Span,
2503    ),
2504    #[diag(parse_no_brace_unicode_escape)]
2505    NoBraceInUnicodeEscape {
2506        #[primary_span]
2507        span: Span,
2508        #[label]
2509        label: Option<Span>,
2510        #[subdiagnostic]
2511        sub: NoBraceUnicodeSub,
2512    },
2513    #[diag(parse_unicode_escape_in_byte)]
2514    #[help]
2515    UnicodeEscapeInByte(
2516        #[primary_span]
2517        #[label]
2518        Span,
2519    ),
2520    #[diag(parse_empty_unicode_escape)]
2521    EmptyUnicodeEscape(
2522        #[primary_span]
2523        #[label]
2524        Span,
2525    ),
2526    #[diag(parse_zero_chars)]
2527    ZeroChars(
2528        #[primary_span]
2529        #[label]
2530        Span,
2531    ),
2532    #[diag(parse_lone_slash)]
2533    LoneSlash(
2534        #[primary_span]
2535        #[label]
2536        Span,
2537    ),
2538    #[diag(parse_unskipped_whitespace)]
2539    UnskippedWhitespace {
2540        #[primary_span]
2541        span: Span,
2542        #[label]
2543        char_span: Span,
2544        ch: String,
2545    },
2546    #[diag(parse_multiple_skipped_lines)]
2547    MultipleSkippedLinesWarning(
2548        #[primary_span]
2549        #[label]
2550        Span,
2551    ),
2552    #[diag(parse_more_than_one_char)]
2553    MoreThanOneChar {
2554        #[primary_span]
2555        span: Span,
2556        #[subdiagnostic]
2557        note: Option<MoreThanOneCharNote>,
2558        #[subdiagnostic]
2559        suggestion: MoreThanOneCharSugg,
2560    },
2561    #[diag(parse_nul_in_c_str)]
2562    NulInCStr {
2563        #[primary_span]
2564        span: Span,
2565    },
2566}
2567
2568#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MoreThanOneCharSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MoreThanOneCharSugg::NormalizedForm {
                        span: __binding_0, ch: __binding_1, normalized: __binding_2
                        } => {
                        let __code_161 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("ch", __binding_1);
                        diag.arg("normalized", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_consider_normalized);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_161, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    MoreThanOneCharSugg::RemoveNonPrinting {
                        span: __binding_0, ch: __binding_1 } => {
                        let __code_162 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("ch", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_remove_non);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_162, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    MoreThanOneCharSugg::QuotesFull {
                        span: __binding_0, is_byte: __binding_1, sugg: __binding_2 }
                        => {
                        let __code_163 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("is_byte", __binding_1);
                        diag.arg("sugg", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_double_quotes);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_163, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    MoreThanOneCharSugg::Quotes {
                        start: __binding_0,
                        end: __binding_1,
                        is_byte: __binding_2,
                        prefix: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_164 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}\"", __binding_3))
                                });
                        let __code_165 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("\""))
                                });
                        suggestions.push((__binding_0, __code_164));
                        suggestions.push((__binding_1, __code_165));
                        diag.store_args();
                        diag.arg("is_byte", __binding_2);
                        diag.arg("prefix", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_double_quotes);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2569pub(crate) enum MoreThanOneCharSugg {
2570    #[suggestion(
2571        parse_consider_normalized,
2572        code = "{normalized}",
2573        applicability = "machine-applicable",
2574        style = "verbose"
2575    )]
2576    NormalizedForm {
2577        #[primary_span]
2578        span: Span,
2579        ch: String,
2580        normalized: String,
2581    },
2582    #[suggestion(
2583        parse_remove_non,
2584        code = "{ch}",
2585        applicability = "maybe-incorrect",
2586        style = "verbose"
2587    )]
2588    RemoveNonPrinting {
2589        #[primary_span]
2590        span: Span,
2591        ch: String,
2592    },
2593    #[suggestion(
2594        parse_use_double_quotes,
2595        code = "{sugg}",
2596        applicability = "machine-applicable",
2597        style = "verbose"
2598    )]
2599    QuotesFull {
2600        #[primary_span]
2601        span: Span,
2602        is_byte: bool,
2603        sugg: String,
2604    },
2605    #[multipart_suggestion(parse_use_double_quotes, applicability = "machine-applicable")]
2606    Quotes {
2607        #[suggestion_part(code = "{prefix}\"")]
2608        start: Span,
2609        #[suggestion_part(code = "\"")]
2610        end: Span,
2611        is_byte: bool,
2612        prefix: &'static str,
2613    },
2614}
2615
2616#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MoreThanOneCharNote {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MoreThanOneCharNote::AllCombining {
                        span: __binding_0,
                        chr: __binding_1,
                        len: __binding_2,
                        escaped_marks: __binding_3 } => {
                        diag.store_args();
                        diag.arg("chr", __binding_1);
                        diag.arg("len", __binding_2);
                        diag.arg("escaped_marks", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_followed_by);
                        diag.span_note(__binding_0, __message);
                        diag.restore_args();
                    }
                    MoreThanOneCharNote::NonPrinting {
                        span: __binding_0, escaped: __binding_1 } => {
                        diag.store_args();
                        diag.arg("escaped", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_non_printing);
                        diag.span_note(__binding_0, __message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2617pub(crate) enum MoreThanOneCharNote {
2618    #[note(parse_followed_by)]
2619    AllCombining {
2620        #[primary_span]
2621        span: Span,
2622        chr: String,
2623        len: usize,
2624        escaped_marks: String,
2625    },
2626    #[note(parse_non_printing)]
2627    NonPrinting {
2628        #[primary_span]
2629        span: Span,
2630        escaped: String,
2631    },
2632}
2633
2634#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for NoBraceUnicodeSub {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    NoBraceUnicodeSub::Suggestion {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let __code_166 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.store_args();
                        diag.arg("suggestion", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_use_braces);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_166, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                    NoBraceUnicodeSub::Help => {
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_format_of_unicode);
                        diag.help(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2635pub(crate) enum NoBraceUnicodeSub {
2636    #[suggestion(
2637        parse_use_braces,
2638        code = "{suggestion}",
2639        applicability = "maybe-incorrect",
2640        style = "verbose"
2641    )]
2642    Suggestion {
2643        #[primary_span]
2644        span: Span,
2645        suggestion: String,
2646    },
2647    #[help(parse_format_of_unicode)]
2648    Help,
2649}
2650
2651#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for WrapInParens {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    WrapInParens { lo: __binding_0, hi: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_167 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_168 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_167));
                        suggestions.push((__binding_1, __code_168));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_wrap_pattern_in_parens);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2652#[multipart_suggestion(parse_sugg_wrap_pattern_in_parens, applicability = "machine-applicable")]
2653pub(crate) struct WrapInParens {
2654    #[suggestion_part(code = "(")]
2655    pub(crate) lo: Span,
2656    #[suggestion_part(code = ")")]
2657    pub(crate) hi: Span,
2658}
2659
2660#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for TopLevelOrPatternNotAllowedSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    TopLevelOrPatternNotAllowedSugg::RemoveLeadingVert {
                        span: __binding_0 } => {
                        let __code_169 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_sugg_remove_leading_vert_in_pattern);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_169, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                    TopLevelOrPatternNotAllowedSugg::WrapInParens {
                        span: __binding_0, suggestion: __binding_1 } => {
                        __binding_1.add_to_diag(diag);
                        diag.store_args();
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2661pub(crate) enum TopLevelOrPatternNotAllowedSugg {
2662    #[suggestion(
2663        parse_sugg_remove_leading_vert_in_pattern,
2664        code = "",
2665        applicability = "machine-applicable",
2666        style = "tool-only"
2667    )]
2668    RemoveLeadingVert {
2669        #[primary_span]
2670        span: Span,
2671    },
2672    WrapInParens {
2673        #[primary_span]
2674        span: Span,
2675        #[subdiagnostic]
2676        suggestion: WrapInParens,
2677    },
2678}
2679
2680#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedVertVertBeforeFunctionParam 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 {
                    UnexpectedVertVertBeforeFunctionParam { span: __binding_0 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_vert_vert_before_function_parameter);
                        let __code_170 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::parse_note_pattern_alternatives_use_single_vert);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_170,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2681#[diag(parse_unexpected_vert_vert_before_function_parameter)]
2682#[note(parse_note_pattern_alternatives_use_single_vert)]
2683pub(crate) struct UnexpectedVertVertBeforeFunctionParam {
2684    #[primary_span]
2685    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
2686    pub span: Span,
2687}
2688
2689#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedVertVertInPattern 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 {
                    UnexpectedVertVertInPattern {
                        span: __binding_0, start: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_vert_vert_in_pattern);
                        let __code_171 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("|"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_171,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_label(__binding_1,
                                crate::fluent_generated::parse_label_while_parsing_or_pattern_here);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2690#[diag(parse_unexpected_vert_vert_in_pattern)]
2691pub(crate) struct UnexpectedVertVertInPattern {
2692    #[primary_span]
2693    #[suggestion(code = "|", applicability = "machine-applicable", style = "verbose")]
2694    pub span: Span,
2695    #[label(parse_label_while_parsing_or_pattern_here)]
2696    pub start: Option<Span>,
2697}
2698
2699#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for TrailingVertSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    TrailingVertSuggestion { span: __binding_0 } => {
                        let __code_172 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_trailing_vert_not_allowed);
                        diag.span_suggestions_with_style(__binding_0, __message,
                            __code_172, rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2700#[suggestion(
2701    parse_trailing_vert_not_allowed,
2702    code = "",
2703    applicability = "machine-applicable",
2704    style = "tool-only"
2705)]
2706pub(crate) struct TrailingVertSuggestion {
2707    #[primary_span]
2708    pub span: Span,
2709}
2710
2711#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            TrailingVertNotAllowed 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 {
                    TrailingVertNotAllowed {
                        span: __binding_0,
                        suggestion: __binding_1,
                        start: __binding_2,
                        token: __binding_3,
                        note_double_vert: __binding_4 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_trailing_vert_not_allowed);
                        ;
                        diag.arg("token", __binding_3);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        if let Some(__binding_2) = __binding_2 {
                            diag.span_label(__binding_2,
                                crate::fluent_generated::parse_label_while_parsing_or_pattern_here);
                        }
                        if __binding_4 {
                            diag.note(crate::fluent_generated::parse_note_pattern_alternatives_use_single_vert);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2712#[diag(parse_trailing_vert_not_allowed)]
2713pub(crate) struct TrailingVertNotAllowed {
2714    #[primary_span]
2715    pub span: Span,
2716    #[subdiagnostic]
2717    pub suggestion: TrailingVertSuggestion,
2718    #[label(parse_label_while_parsing_or_pattern_here)]
2719    pub start: Option<Span>,
2720    pub token: Token,
2721    #[note(parse_note_pattern_alternatives_use_single_vert)]
2722    pub note_double_vert: bool,
2723}
2724
2725#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DotDotDotRestPattern 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 {
                    DotDotDotRestPattern {
                        span: __binding_0,
                        suggestion: __binding_1,
                        var_args: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dotdotdot_rest_pattern);
                        let __code_173 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::_subdiag::suggestion, __code_173,
                                rustc_errors::Applicability::MachineApplicable,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        if let Some(__binding_2) = __binding_2 {
                            diag.note(crate::fluent_generated::_subdiag::note);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2726#[diag(parse_dotdotdot_rest_pattern)]
2727pub(crate) struct DotDotDotRestPattern {
2728    #[primary_span]
2729    #[label]
2730    pub span: Span,
2731    #[suggestion(style = "verbose", code = "", applicability = "machine-applicable")]
2732    pub suggestion: Option<Span>,
2733    #[note]
2734    pub var_args: Option<()>,
2735}
2736
2737#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PatternOnWrongSideOfAt 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 {
                    PatternOnWrongSideOfAt {
                        whole_span: __binding_0,
                        whole_pat: __binding_1,
                        pattern: __binding_2,
                        binding: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_pattern_on_wrong_side_of_at);
                        let __code_174 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        ;
                        diag.arg("whole_pat", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_174,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_label_pattern);
                        diag.span_label(__binding_3,
                            crate::fluent_generated::parse_label_binding);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2738#[diag(parse_pattern_on_wrong_side_of_at)]
2739pub(crate) struct PatternOnWrongSideOfAt {
2740    #[primary_span]
2741    #[suggestion(code = "{whole_pat}", applicability = "machine-applicable", style = "verbose")]
2742    pub whole_span: Span,
2743    pub whole_pat: String,
2744    #[label(parse_label_pattern)]
2745    pub pattern: Span,
2746    #[label(parse_label_binding)]
2747    pub binding: Span,
2748}
2749
2750#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedBindingLeftOfAt 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 {
                    ExpectedBindingLeftOfAt {
                        whole_span: __binding_0, lhs: __binding_1, rhs: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_binding_left_of_at);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_label_lhs);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_label_rhs);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2751#[diag(parse_expected_binding_left_of_at)]
2752#[note]
2753pub(crate) struct ExpectedBindingLeftOfAt {
2754    #[primary_span]
2755    pub whole_span: Span,
2756    #[label(parse_label_lhs)]
2757    pub lhs: Span,
2758    #[label(parse_label_rhs)]
2759    pub rhs: Span,
2760}
2761
2762#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for ParenRangeSuggestion {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    ParenRangeSuggestion { lo: __binding_0, hi: __binding_1 } =>
                        {
                        let mut suggestions = Vec::new();
                        let __code_175 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_176 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_175));
                        suggestions.push((__binding_1, __code_176));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_ambiguous_range_pattern_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2763#[multipart_suggestion(
2764    parse_ambiguous_range_pattern_suggestion,
2765    applicability = "machine-applicable"
2766)]
2767pub(crate) struct ParenRangeSuggestion {
2768    #[suggestion_part(code = "(")]
2769    pub lo: Span,
2770    #[suggestion_part(code = ")")]
2771    pub hi: Span,
2772}
2773
2774#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AmbiguousRangePattern 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 {
                    AmbiguousRangePattern {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_ambiguous_range_pattern);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2775#[diag(parse_ambiguous_range_pattern)]
2776pub(crate) struct AmbiguousRangePattern {
2777    #[primary_span]
2778    pub span: Span,
2779    #[subdiagnostic]
2780    pub suggestion: ParenRangeSuggestion,
2781}
2782
2783#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedLifetimeInPattern 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 {
                    UnexpectedLifetimeInPattern {
                        span: __binding_0,
                        symbol: __binding_1,
                        suggestion: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_lifetime_in_pattern);
                        let __code_177 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("symbol", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::_subdiag::suggestion, __code_177,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2784#[diag(parse_unexpected_lifetime_in_pattern)]
2785pub(crate) struct UnexpectedLifetimeInPattern {
2786    #[primary_span]
2787    pub span: Span,
2788    pub symbol: Symbol,
2789    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
2790    pub suggestion: Span,
2791}
2792
2793#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidMutInPattern 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 {
                    InvalidMutInPattern::NestedIdent {
                        span: __binding_0, pat: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_mut_on_nested_ident_pattern);
                        let __code_178 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::parse_note_mut_pattern_usage);
                        ;
                        diag.arg("pat", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_178,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                    InvalidMutInPattern::NonIdent { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_mut_on_non_ident_pattern);
                        let __code_179 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::parse_note_mut_pattern_usage);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_179,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2794pub(crate) enum InvalidMutInPattern {
2795    #[diag(parse_mut_on_nested_ident_pattern)]
2796    #[note(parse_note_mut_pattern_usage)]
2797    NestedIdent {
2798        #[primary_span]
2799        #[suggestion(code = "{pat}", applicability = "machine-applicable", style = "verbose")]
2800        span: Span,
2801        pat: String,
2802    },
2803    #[diag(parse_mut_on_non_ident_pattern)]
2804    #[note(parse_note_mut_pattern_usage)]
2805    NonIdent {
2806        #[primary_span]
2807        #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
2808        span: Span,
2809    },
2810}
2811
2812#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            RepeatedMutInPattern 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 {
                    RepeatedMutInPattern {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_repeated_mut_in_pattern);
                        let __code_180 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_180,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2813#[diag(parse_repeated_mut_in_pattern)]
2814pub(crate) struct RepeatedMutInPattern {
2815    #[primary_span]
2816    pub span: Span,
2817    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
2818    pub suggestion: Span,
2819}
2820
2821#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DotDotDotRangeToPatternNotAllowed 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 {
                    DotDotDotRangeToPatternNotAllowed { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dot_dot_dot_range_to_pattern_not_allowed);
                        let __code_181 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("..="))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_181,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2822#[diag(parse_dot_dot_dot_range_to_pattern_not_allowed)]
2823pub(crate) struct DotDotDotRangeToPatternNotAllowed {
2824    #[primary_span]
2825    #[suggestion(style = "verbose", code = "..=", applicability = "machine-applicable")]
2826    pub span: Span,
2827}
2828
2829#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            EnumPatternInsteadOfIdentifier 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 {
                    EnumPatternInsteadOfIdentifier { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_enum_pattern_instead_of_identifier);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2830#[diag(parse_enum_pattern_instead_of_identifier)]
2831pub(crate) struct EnumPatternInsteadOfIdentifier {
2832    #[primary_span]
2833    pub span: Span,
2834}
2835
2836#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AtDotDotInStructPattern 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 {
                    AtDotDotInStructPattern {
                        span: __binding_0, remove: __binding_1, ident: __binding_2 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_at_dot_dot_in_struct_pattern);
                        let __code_182 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("ident", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_182,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2837#[diag(parse_at_dot_dot_in_struct_pattern)]
2838pub(crate) struct AtDotDotInStructPattern {
2839    #[primary_span]
2840    pub span: Span,
2841    #[suggestion(code = "", style = "verbose", applicability = "machine-applicable")]
2842    pub remove: Span,
2843    pub ident: Ident,
2844}
2845
2846#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AtInStructPattern 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 {
                    AtInStructPattern { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_at_in_struct_pattern);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2847#[diag(parse_at_in_struct_pattern)]
2848#[note]
2849#[help]
2850pub(crate) struct AtInStructPattern {
2851    #[primary_span]
2852    pub span: Span,
2853}
2854
2855#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DotDotDotForRemainingFields 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 {
                    DotDotDotForRemainingFields {
                        span: __binding_0, token_str: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dot_dot_dot_for_remaining_fields);
                        let __code_183 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(".."))
                                            })].into_iter();
                        ;
                        diag.arg("token_str", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_183,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2856#[diag(parse_dot_dot_dot_for_remaining_fields)]
2857pub(crate) struct DotDotDotForRemainingFields {
2858    #[primary_span]
2859    #[suggestion(code = "..", style = "verbose", applicability = "machine-applicable")]
2860    pub span: Span,
2861    pub token_str: Cow<'static, str>,
2862}
2863
2864#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedCommaAfterPatternField 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 {
                    ExpectedCommaAfterPatternField { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_comma_after_pattern_field);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2865#[diag(parse_expected_comma_after_pattern_field)]
2866pub(crate) struct ExpectedCommaAfterPatternField {
2867    #[primary_span]
2868    pub span: Span,
2869}
2870
2871#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedExpressionInPattern 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 {
                    UnexpectedExpressionInPattern {
                        span: __binding_0,
                        is_bound: __binding_1,
                        expr_precedence: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_expr_in_pat);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("is_bound", __binding_1);
                        diag.arg("expr_precedence", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2872#[diag(parse_unexpected_expr_in_pat)]
2873#[note]
2874pub(crate) struct UnexpectedExpressionInPattern {
2875    /// The unexpected expr's span.
2876    #[primary_span]
2877    #[label]
2878    pub span: Span,
2879    /// Was a `RangePatternBound` expected?
2880    pub is_bound: bool,
2881    /// The unexpected expr's precedence (used in match arm guard suggestions).
2882    pub expr_precedence: ExprPrecedence,
2883}
2884
2885#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedExpressionInPatternSugg
            {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedExpressionInPatternSugg::CreateGuard {
                        ident_span: __binding_0,
                        pat_hi: __binding_1,
                        ident: __binding_2,
                        expr: __binding_3 } => {
                        let mut suggestions = Vec::new();
                        let __code_184 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                });
                        let __code_185 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" if {1} == {0}",
                                            __binding_3, __binding_2))
                                });
                        suggestions.push((__binding_0, __code_184));
                        suggestions.push((__binding_1, __code_185));
                        diag.store_args();
                        diag.arg("ident", __binding_2);
                        diag.arg("expr", __binding_3);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_expr_in_pat_create_guard_sugg);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    UnexpectedExpressionInPatternSugg::UpdateGuard {
                        ident_span: __binding_0,
                        guard_lo: __binding_1,
                        guard_hi: __binding_2,
                        guard_hi_paren: __binding_3,
                        ident: __binding_4,
                        expr: __binding_5 } => {
                        let mut suggestions = Vec::new();
                        let __code_186 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_4))
                                });
                        let __code_187 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        let __code_188 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{1} && {2} == {0}",
                                            __binding_5, __binding_3, __binding_4))
                                });
                        suggestions.push((__binding_0, __code_186));
                        if let Some(__binding_1) = __binding_1 {
                            suggestions.push((__binding_1, __code_187));
                        }
                        suggestions.push((__binding_2, __code_188));
                        diag.store_args();
                        diag.arg("guard_hi_paren", __binding_3);
                        diag.arg("ident", __binding_4);
                        diag.arg("expr", __binding_5);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_expr_in_pat_update_guard_sugg);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                    UnexpectedExpressionInPatternSugg::Const {
                        stmt_lo: __binding_0,
                        ident_span: __binding_1,
                        ident: __binding_2,
                        expr: __binding_3,
                        indentation: __binding_4 } => {
                        let mut suggestions = Vec::new();
                        let __code_189 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{2}const {1}: /* Type */ = {0};\n",
                                            __binding_3, __binding_2, __binding_4))
                                });
                        let __code_190 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                });
                        suggestions.push((__binding_0, __code_189));
                        suggestions.push((__binding_1, __code_190));
                        diag.store_args();
                        diag.arg("ident", __binding_2);
                        diag.arg("expr", __binding_3);
                        diag.arg("indentation", __binding_4);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_expr_in_pat_const_sugg);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2886pub(crate) enum UnexpectedExpressionInPatternSugg {
2887    #[multipart_suggestion(
2888        parse_unexpected_expr_in_pat_create_guard_sugg,
2889        applicability = "maybe-incorrect"
2890    )]
2891    CreateGuard {
2892        /// Where to put the suggested identifier.
2893        #[suggestion_part(code = "{ident}")]
2894        ident_span: Span,
2895        /// Where to put the match arm.
2896        #[suggestion_part(code = " if {ident} == {expr}")]
2897        pat_hi: Span,
2898        /// The suggested identifier.
2899        ident: String,
2900        /// The unexpected expression.
2901        expr: String,
2902    },
2903
2904    #[multipart_suggestion(
2905        parse_unexpected_expr_in_pat_update_guard_sugg,
2906        applicability = "maybe-incorrect"
2907    )]
2908    UpdateGuard {
2909        /// Where to put the suggested identifier.
2910        #[suggestion_part(code = "{ident}")]
2911        ident_span: Span,
2912        /// The beginning of the match arm guard's expression (insert a `(` if `Some`).
2913        #[suggestion_part(code = "(")]
2914        guard_lo: Option<Span>,
2915        /// The end of the match arm guard's expression.
2916        #[suggestion_part(code = "{guard_hi_paren} && {ident} == {expr}")]
2917        guard_hi: Span,
2918        /// Either `")"` or `""`.
2919        guard_hi_paren: &'static str,
2920        /// The suggested identifier.
2921        ident: String,
2922        /// The unexpected expression.
2923        expr: String,
2924    },
2925
2926    #[multipart_suggestion(
2927        parse_unexpected_expr_in_pat_const_sugg,
2928        applicability = "has-placeholders"
2929    )]
2930    Const {
2931        /// Where to put the extracted constant declaration.
2932        #[suggestion_part(code = "{indentation}const {ident}: /* Type */ = {expr};\n")]
2933        stmt_lo: Span,
2934        /// Where to put the suggested identifier.
2935        #[suggestion_part(code = "{ident}")]
2936        ident_span: Span,
2937        /// The suggested identifier.
2938        ident: String,
2939        /// The unexpected expression.
2940        expr: String,
2941        /// The statement's block's indentation.
2942        indentation: String,
2943    },
2944}
2945
2946#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnexpectedParenInRangePat 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 {
                    UnexpectedParenInRangePat {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unexpected_paren_in_range_pat);
                        ;
                        diag.span(__binding_0.clone());
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2947#[diag(parse_unexpected_paren_in_range_pat)]
2948pub(crate) struct UnexpectedParenInRangePat {
2949    #[primary_span]
2950    pub span: Vec<Span>,
2951    #[subdiagnostic]
2952    pub sugg: UnexpectedParenInRangePatSugg,
2953}
2954
2955#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for UnexpectedParenInRangePatSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    UnexpectedParenInRangePatSugg {
                        start_span: __binding_0, end_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_191 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_192 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_191));
                        suggestions.push((__binding_1, __code_192));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_unexpected_paren_in_range_pat_sugg);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
2956#[multipart_suggestion(
2957    parse_unexpected_paren_in_range_pat_sugg,
2958    applicability = "machine-applicable"
2959)]
2960pub(crate) struct UnexpectedParenInRangePatSugg {
2961    #[suggestion_part(code = "")]
2962    pub start_span: Span,
2963    #[suggestion_part(code = "")]
2964    pub end_span: Span,
2965}
2966
2967#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ReturnTypesUseThinArrow 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 {
                    ReturnTypesUseThinArrow {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_return_types_use_thin_arrow);
                        let __code_193 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" -> "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_193,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2968#[diag(parse_return_types_use_thin_arrow)]
2969pub(crate) struct ReturnTypesUseThinArrow {
2970    #[primary_span]
2971    pub span: Span,
2972    #[suggestion(style = "verbose", code = " -> ", applicability = "machine-applicable")]
2973    pub suggestion: Span,
2974}
2975
2976#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NeedPlusAfterTraitObjectLifetime 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 {
                    NeedPlusAfterTraitObjectLifetime {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_need_plus_after_trait_object_lifetime);
                        let __code_194 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" + /* Trait */"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_194,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2977#[diag(parse_need_plus_after_trait_object_lifetime)]
2978pub(crate) struct NeedPlusAfterTraitObjectLifetime {
2979    #[primary_span]
2980    pub span: Span,
2981    #[suggestion(code = " + /* Trait */", applicability = "has-placeholders")]
2982    pub suggestion: Span,
2983}
2984
2985#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedMutOrConstInRawPointerType 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 {
                    ExpectedMutOrConstInRawPointerType {
                        span: __binding_0, after_asterisk: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_mut_or_const_in_raw_pointer_type);
                        let __code_195 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("mut "))
                                            }),
                                        ::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("const "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_195,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2986#[diag(parse_expected_mut_or_const_in_raw_pointer_type)]
2987pub(crate) struct ExpectedMutOrConstInRawPointerType {
2988    #[primary_span]
2989    pub span: Span,
2990    #[suggestion(code("mut ", "const "), applicability = "has-placeholders", style = "verbose")]
2991    pub after_asterisk: Span,
2992}
2993
2994#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LifetimeAfterMut 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 {
                    LifetimeAfterMut {
                        span: __binding_0,
                        suggest_lifetime: __binding_1,
                        snippet: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_lifetime_after_mut);
                        let __code_196 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("&{0} mut", __binding_2))
                                            })].into_iter();
                        ;
                        diag.arg("snippet", __binding_2);
                        diag.span(__binding_0);
                        if let Some(__binding_1) = __binding_1 {
                            diag.span_suggestions_with_style(__binding_1,
                                crate::fluent_generated::_subdiag::suggestion, __code_196,
                                rustc_errors::Applicability::MaybeIncorrect,
                                rustc_errors::SuggestionStyle::ShowAlways);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
2995#[diag(parse_lifetime_after_mut)]
2996pub(crate) struct LifetimeAfterMut {
2997    #[primary_span]
2998    pub span: Span,
2999    #[suggestion(code = "&{snippet} mut", applicability = "maybe-incorrect", style = "verbose")]
3000    pub suggest_lifetime: Option<Span>,
3001    pub snippet: String,
3002}
3003
3004#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for DynAfterMut
            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 {
                    DynAfterMut { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dyn_after_mut);
                        let __code_197 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("&mut dyn"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_197,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3005#[diag(parse_dyn_after_mut)]
3006pub(crate) struct DynAfterMut {
3007    #[primary_span]
3008    #[suggestion(code = "&mut dyn", applicability = "machine-applicable", style = "verbose")]
3009    pub span: Span,
3010}
3011
3012#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FnPointerCannotBeConst 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 {
                    FnPointerCannotBeConst {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_fn_pointer_cannot_be_const);
                        let __code_198 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_198,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3013#[diag(parse_fn_pointer_cannot_be_const)]
3014#[note]
3015pub(crate) struct FnPointerCannotBeConst {
3016    #[primary_span]
3017    #[label]
3018    pub span: Span,
3019    #[suggestion(code = "", applicability = "maybe-incorrect", style = "verbose")]
3020    pub suggestion: Span,
3021}
3022
3023#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FnPointerCannotBeAsync 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 {
                    FnPointerCannotBeAsync {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_fn_pointer_cannot_be_async);
                        let __code_199 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_199,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3024#[diag(parse_fn_pointer_cannot_be_async)]
3025#[note]
3026pub(crate) struct FnPointerCannotBeAsync {
3027    #[primary_span]
3028    #[label]
3029    pub span: Span,
3030    #[suggestion(code = "", applicability = "maybe-incorrect", style = "verbose")]
3031    pub suggestion: Span,
3032}
3033
3034#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            NestedCVariadicType 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 {
                    NestedCVariadicType { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nested_c_variadic_type);
                        diag.code(E0743);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3035#[diag(parse_nested_c_variadic_type, code = E0743)]
3036pub(crate) struct NestedCVariadicType {
3037    #[primary_span]
3038    pub span: Span,
3039}
3040
3041#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidCVariadicType 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 {
                    InvalidCVariadicType { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dotdotdot_rest_type);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3042#[diag(parse_dotdotdot_rest_type)]
3043#[note]
3044pub(crate) struct InvalidCVariadicType {
3045    #[primary_span]
3046    pub span: Span,
3047}
3048
3049#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidDynKeyword 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 {
                    InvalidDynKeyword {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_dyn_keyword);
                        let __code_200 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_200,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3050#[diag(parse_invalid_dyn_keyword)]
3051#[help]
3052pub(crate) struct InvalidDynKeyword {
3053    #[primary_span]
3054    pub span: Span,
3055    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
3056    pub suggestion: Span,
3057}
3058
3059#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for HelpUseLatestEdition {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    HelpUseLatestEdition::Cargo { edition: __binding_0 } => {
                        diag.store_args();
                        diag.arg("edition", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_help_set_edition_cargo);
                        diag.help(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_note_edition_guide);
                        diag.note(__message);
                        diag.restore_args();
                    }
                    HelpUseLatestEdition::Standalone { edition: __binding_0 } =>
                        {
                        diag.store_args();
                        diag.arg("edition", __binding_0);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_help_set_edition_standalone);
                        diag.help(__message);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_note_edition_guide);
                        diag.note(__message);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3060pub(crate) enum HelpUseLatestEdition {
3061    #[help(parse_help_set_edition_cargo)]
3062    #[note(parse_note_edition_guide)]
3063    Cargo { edition: Edition },
3064    #[help(parse_help_set_edition_standalone)]
3065    #[note(parse_note_edition_guide)]
3066    Standalone { edition: Edition },
3067}
3068
3069impl HelpUseLatestEdition {
3070    pub(crate) fn new() -> Self {
3071        let edition = LATEST_STABLE_EDITION;
3072        if rustc_session::utils::was_invoked_from_cargo() {
3073            Self::Cargo { edition }
3074        } else {
3075            Self::Standalone { edition }
3076        }
3077    }
3078}
3079
3080#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BoxSyntaxRemoved 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 {
                    BoxSyntaxRemoved { span: __binding_0, sugg: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_box_syntax_removed);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3081#[diag(parse_box_syntax_removed)]
3082pub(crate) struct BoxSyntaxRemoved {
3083    #[primary_span]
3084    pub span: Span,
3085    #[subdiagnostic]
3086    pub sugg: AddBoxNew,
3087}
3088
3089#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for AddBoxNew {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    AddBoxNew { box_kw_and_lo: __binding_0, hi: __binding_1 } =>
                        {
                        let mut suggestions = Vec::new();
                        let __code_201 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("Box::new("))
                                });
                        let __code_202 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(")"))
                                });
                        suggestions.push((__binding_0, __code_201));
                        suggestions.push((__binding_1, __code_202));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_box_syntax_removed_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3090#[multipart_suggestion(
3091    parse_box_syntax_removed_suggestion,
3092    applicability = "machine-applicable",
3093    style = "verbose"
3094)]
3095pub(crate) struct AddBoxNew {
3096    #[suggestion_part(code = "Box::new(")]
3097    pub box_kw_and_lo: Span,
3098    #[suggestion_part(code = ")")]
3099    pub hi: Span,
3100}
3101
3102#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BadReturnTypeNotationOutput 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 {
                    BadReturnTypeNotationOutput {
                        span: __binding_0, suggestion: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bad_return_type_notation_output);
                        let __code_203 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_203,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3103#[diag(parse_bad_return_type_notation_output)]
3104pub(crate) struct BadReturnTypeNotationOutput {
3105    #[primary_span]
3106    pub span: Span,
3107    #[suggestion(code = "", applicability = "maybe-incorrect", style = "verbose")]
3108    pub suggestion: Span,
3109}
3110
3111#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BadAssocTypeBounds 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 {
                    BadAssocTypeBounds { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bad_assoc_type_bounds);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3112#[diag(parse_bad_assoc_type_bounds)]
3113pub(crate) struct BadAssocTypeBounds {
3114    #[primary_span]
3115    #[label]
3116    pub span: Span,
3117}
3118
3119#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttrAfterGeneric 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 {
                    AttrAfterGeneric { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_attr_after_generic);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3120#[diag(parse_attr_after_generic)]
3121pub(crate) struct AttrAfterGeneric {
3122    #[primary_span]
3123    #[label]
3124    pub span: Span,
3125}
3126
3127#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AttrWithoutGenerics 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 {
                    AttrWithoutGenerics { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_attr_without_generics);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3128#[diag(parse_attr_without_generics)]
3129pub(crate) struct AttrWithoutGenerics {
3130    #[primary_span]
3131    #[label]
3132    pub span: Span,
3133}
3134
3135#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            WhereOnGenerics 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 {
                    WhereOnGenerics { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_where_generics);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3136#[diag(parse_where_generics)]
3137pub(crate) struct WhereOnGenerics {
3138    #[primary_span]
3139    #[label]
3140    pub span: Span,
3141}
3142
3143#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for GenericsInPath
            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 {
                    GenericsInPath { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_generics_in_path);
                        ;
                        diag.span(__binding_0.clone());
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3144#[diag(parse_generics_in_path)]
3145pub(crate) struct GenericsInPath {
3146    #[primary_span]
3147    pub span: Vec<Span>,
3148}
3149
3150#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            LifetimeInEqConstraint 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 {
                    LifetimeInEqConstraint {
                        span: __binding_0,
                        lifetime: __binding_1,
                        binding_label: __binding_2,
                        colon_sugg: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_lifetime_in_eq_constraint);
                        let __code_204 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(": "))
                                            })].into_iter();
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("lifetime", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_context_label);
                        diag.span_suggestions_with_style(__binding_3,
                            crate::fluent_generated::parse_colon_sugg, __code_204,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3151#[diag(parse_lifetime_in_eq_constraint)]
3152#[help]
3153pub(crate) struct LifetimeInEqConstraint {
3154    #[primary_span]
3155    #[label]
3156    pub span: Span,
3157    pub lifetime: Ident,
3158    #[label(parse_context_label)]
3159    pub binding_label: Span,
3160    #[suggestion(
3161        parse_colon_sugg,
3162        style = "verbose",
3163        applicability = "maybe-incorrect",
3164        code = ": "
3165    )]
3166    pub colon_sugg: Span,
3167}
3168
3169#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ModifierLifetime 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 {
                    ModifierLifetime { span: __binding_0, modifier: __binding_1
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_modifier_lifetime);
                        let __code_205 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("modifier", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_205,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::CompletelyHidden);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3170#[diag(parse_modifier_lifetime)]
3171pub(crate) struct ModifierLifetime {
3172    #[primary_span]
3173    #[suggestion(style = "tool-only", applicability = "maybe-incorrect", code = "")]
3174    pub span: Span,
3175    pub modifier: &'static str,
3176}
3177
3178#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnderscoreLiteralSuffix 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 {
                    UnderscoreLiteralSuffix { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_underscore_literal_suffix);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3179#[diag(parse_underscore_literal_suffix)]
3180pub(crate) struct UnderscoreLiteralSuffix {
3181    #[primary_span]
3182    pub span: Span,
3183}
3184
3185#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedLabelFoundIdent 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 {
                    ExpectedLabelFoundIdent {
                        span: __binding_0, start: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expect_label_found_ident);
                        let __code_206 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("\'"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_206,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3186#[diag(parse_expect_label_found_ident)]
3187pub(crate) struct ExpectedLabelFoundIdent {
3188    #[primary_span]
3189    pub span: Span,
3190    #[suggestion(code = "'", applicability = "machine-applicable", style = "verbose")]
3191    pub start: Span,
3192}
3193
3194#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InappropriateDefault 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 {
                    InappropriateDefault {
                        span: __binding_0, article: __binding_1, descr: __binding_2
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_inappropriate_default);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("article", __binding_1);
                        diag.arg("descr", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3195#[diag(parse_inappropriate_default)]
3196#[note]
3197pub(crate) struct InappropriateDefault {
3198    #[primary_span]
3199    #[label]
3200    pub span: Span,
3201    pub article: &'static str,
3202    pub descr: &'static str,
3203}
3204
3205#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            RecoverImportAsUse 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 {
                    RecoverImportAsUse {
                        span: __binding_0, token_name: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_recover_import_as_use);
                        let __code_207 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("use"))
                                            })].into_iter();
                        ;
                        diag.arg("token_name", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_207,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3206#[diag(parse_recover_import_as_use)]
3207pub(crate) struct RecoverImportAsUse {
3208    #[primary_span]
3209    #[suggestion(code = "use", applicability = "machine-applicable", style = "verbose")]
3210    pub span: Span,
3211    pub token_name: String,
3212}
3213
3214#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            SingleColonImportPath 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 {
                    SingleColonImportPath { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_single_colon_import_path);
                        let __code_208 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("::"))
                                            })].into_iter();
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_208,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3215#[diag(parse_single_colon_import_path)]
3216#[note]
3217pub(crate) struct SingleColonImportPath {
3218    #[primary_span]
3219    #[suggestion(code = "::", applicability = "machine-applicable", style = "verbose")]
3220    pub span: Span,
3221}
3222
3223#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for BadItemKind
            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 {
                    BadItemKind {
                        span: __binding_0,
                        descr: __binding_1,
                        ctx: __binding_2,
                        help: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_bad_item_kind);
                        ;
                        diag.arg("descr", __binding_1);
                        diag.arg("ctx", __binding_2);
                        diag.span(__binding_0);
                        if __binding_3 {
                            diag.help(crate::fluent_generated::_subdiag::help);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3224#[diag(parse_bad_item_kind)]
3225pub(crate) struct BadItemKind {
3226    #[primary_span]
3227    pub span: Span,
3228    pub descr: &'static str,
3229    pub ctx: &'static str,
3230    #[help]
3231    pub help: bool,
3232}
3233
3234#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MacroRulesMissingBang 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 {
                    MacroRulesMissingBang { span: __binding_0, hi: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_macro_rules_missing_bang);
                        let __code_209 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("!"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_209,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3235#[diag(parse_macro_rules_missing_bang)]
3236pub(crate) struct MacroRulesMissingBang {
3237    #[primary_span]
3238    pub span: Span,
3239    #[suggestion(code = "!", applicability = "machine-applicable", style = "verbose")]
3240    pub hi: Span,
3241}
3242
3243#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MacroNameRemoveBang 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 {
                    MacroNameRemoveBang { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_macro_name_remove_bang);
                        let __code_210 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_210,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::HideCodeInline);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3244#[diag(parse_macro_name_remove_bang)]
3245pub(crate) struct MacroNameRemoveBang {
3246    #[primary_span]
3247    #[suggestion(code = "", applicability = "machine-applicable", style = "short")]
3248    pub span: Span,
3249}
3250
3251#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            MacroRulesVisibility<'a> where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    MacroRulesVisibility { span: __binding_0, vis: __binding_1 }
                        => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_macro_rules_visibility);
                        let __code_211 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("#[macro_export]"))
                                            })].into_iter();
                        ;
                        diag.arg("vis", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_211,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3252#[diag(parse_macro_rules_visibility)]
3253pub(crate) struct MacroRulesVisibility<'a> {
3254    #[primary_span]
3255    #[suggestion(code = "#[macro_export]", applicability = "maybe-incorrect", style = "verbose")]
3256    pub span: Span,
3257    pub vis: &'a str,
3258}
3259
3260#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            MacroInvocationVisibility<'a> where
            G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    MacroInvocationVisibility {
                        span: __binding_0, vis: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_macro_invocation_visibility);
                        let __code_212 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.arg("vis", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_212,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3261#[diag(parse_macro_invocation_visibility)]
3262#[help]
3263pub(crate) struct MacroInvocationVisibility<'a> {
3264    #[primary_span]
3265    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
3266    pub span: Span,
3267    pub vis: &'a str,
3268}
3269
3270#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            NestedAdt<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    NestedAdt {
                        span: __binding_0,
                        item: __binding_1,
                        keyword: __binding_2,
                        kw_str: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_nested_adt);
                        let __code_213 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("keyword", __binding_2);
                        diag.arg("kw_str", __binding_3);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_213,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3271#[diag(parse_nested_adt)]
3272pub(crate) struct NestedAdt<'a> {
3273    #[primary_span]
3274    pub span: Span,
3275    #[suggestion(code = "", applicability = "maybe-incorrect", style = "verbose")]
3276    pub item: Span,
3277    pub keyword: &'a str,
3278    pub kw_str: Cow<'a, str>,
3279}
3280
3281#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            FunctionBodyEqualsExpr 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 {
                    FunctionBodyEqualsExpr {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_function_body_equals_expr);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3282#[diag(parse_function_body_equals_expr)]
3283pub(crate) struct FunctionBodyEqualsExpr {
3284    #[primary_span]
3285    pub span: Span,
3286    #[subdiagnostic]
3287    pub sugg: FunctionBodyEqualsExprSugg,
3288}
3289
3290#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for FunctionBodyEqualsExprSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    FunctionBodyEqualsExprSugg {
                        eq: __binding_0, semi: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_214 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{{"))
                                });
                        let __code_215 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" }}"))
                                });
                        suggestions.push((__binding_0, __code_214));
                        suggestions.push((__binding_1, __code_215));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3291#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
3292pub(crate) struct FunctionBodyEqualsExprSugg {
3293    #[suggestion_part(code = "{{")]
3294    pub eq: Span,
3295    #[suggestion_part(code = " }}")]
3296    pub semi: Span,
3297}
3298
3299#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for BoxNotPat
            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 {
                    BoxNotPat {
                        span: __binding_0,
                        kw: __binding_1,
                        lo: __binding_2,
                        descr: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_box_not_pat);
                        let __code_216 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("r#"))
                                            })].into_iter();
                        ;
                        diag.arg("descr", __binding_3);
                        diag.span(__binding_0);
                        diag.span_note(__binding_1,
                            crate::fluent_generated::_subdiag::note);
                        diag.span_suggestions_with_style(__binding_2,
                            crate::fluent_generated::_subdiag::suggestion, __code_216,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3300#[diag(parse_box_not_pat)]
3301pub(crate) struct BoxNotPat {
3302    #[primary_span]
3303    pub span: Span,
3304    #[note]
3305    pub kw: Span,
3306    #[suggestion(code = "r#", applicability = "maybe-incorrect", style = "verbose")]
3307    pub lo: Span,
3308    pub descr: String,
3309}
3310
3311#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for UnmatchedAngle
            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 {
                    UnmatchedAngle { span: __binding_0, plural: __binding_1 } =>
                        {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unmatched_angle);
                        let __code_217 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(""))
                                            })].into_iter();
                        ;
                        diag.arg("plural", __binding_1);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_217,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3312#[diag(parse_unmatched_angle)]
3313pub(crate) struct UnmatchedAngle {
3314    #[primary_span]
3315    #[suggestion(code = "", applicability = "machine-applicable", style = "verbose")]
3316    pub span: Span,
3317    pub plural: bool,
3318}
3319
3320#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            MissingPlusBounds 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 {
                    MissingPlusBounds {
                        span: __binding_0, hi: __binding_1, sym: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_missing_plus_in_bounds);
                        let __code_218 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!(" +"))
                                            })].into_iter();
                        ;
                        diag.arg("sym", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_218,
                            rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3321#[diag(parse_missing_plus_in_bounds)]
3322pub(crate) struct MissingPlusBounds {
3323    #[primary_span]
3324    pub span: Span,
3325    #[suggestion(code = " +", applicability = "maybe-incorrect", style = "verbose")]
3326    pub hi: Span,
3327    pub sym: Symbol,
3328}
3329
3330#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectParensTraitBounds 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 {
                    IncorrectParensTraitBounds {
                        span: __binding_0, sugg: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_parens_trait_bounds);
                        ;
                        diag.span(__binding_0.clone());
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3331#[diag(parse_incorrect_parens_trait_bounds)]
3332pub(crate) struct IncorrectParensTraitBounds {
3333    #[primary_span]
3334    pub span: Vec<Span>,
3335    #[subdiagnostic]
3336    pub sugg: IncorrectParensTraitBoundsSugg,
3337}
3338
3339#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for IncorrectParensTraitBoundsSugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    IncorrectParensTraitBoundsSugg {
                        wrong_span: __binding_0, new_span: __binding_1 } => {
                        let mut suggestions = Vec::new();
                        let __code_219 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(" "))
                                });
                        let __code_220 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("("))
                                });
                        suggestions.push((__binding_0, __code_219));
                        suggestions.push((__binding_1, __code_220));
                        diag.store_args();
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_incorrect_parens_trait_bounds_sugg);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3340#[multipart_suggestion(
3341    parse_incorrect_parens_trait_bounds_sugg,
3342    applicability = "machine-applicable"
3343)]
3344pub(crate) struct IncorrectParensTraitBoundsSugg {
3345    #[suggestion_part(code = " ")]
3346    pub wrong_span: Span,
3347    #[suggestion_part(code = "(")]
3348    pub new_span: Span,
3349}
3350
3351#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            KwBadCase<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    KwBadCase {
                        span: __binding_0, kw: __binding_1, case: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_kw_bad_case);
                        let __code_221 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("{0}", __binding_1))
                                            })].into_iter();
                        ;
                        diag.arg("kw", __binding_1);
                        diag.arg("case", __binding_2);
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_221,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3352#[diag(parse_kw_bad_case)]
3353pub(crate) struct KwBadCase<'a> {
3354    #[primary_span]
3355    #[suggestion(code = "{kw}", style = "verbose", applicability = "machine-applicable")]
3356    pub span: Span,
3357    pub kw: &'a str,
3358    pub case: Case,
3359}
3360
3361pub(crate) enum Case {
3362    Upper,
3363    Lower,
3364    Mixed,
3365}
3366
3367impl IntoDiagArg for Case {
3368    fn into_diag_arg(self, path: &mut Option<PathBuf>) -> DiagArgValue {
3369        match self {
3370            Case::Upper => "uppercase",
3371            Case::Lower => "lowercase",
3372            Case::Mixed => "the correct case",
3373        }
3374        .into_diag_arg(path)
3375    }
3376}
3377
3378#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            UnknownBuiltinConstruct 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 {
                    UnknownBuiltinConstruct {
                        span: __binding_0, name: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_unknown_builtin_construct);
                        ;
                        diag.arg("name", __binding_1);
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3379#[diag(parse_unknown_builtin_construct)]
3380pub(crate) struct UnknownBuiltinConstruct {
3381    #[primary_span]
3382    pub span: Span,
3383    pub name: Ident,
3384}
3385
3386#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedBuiltinIdent 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 {
                    ExpectedBuiltinIdent { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expected_builtin_ident);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3387#[diag(parse_expected_builtin_ident)]
3388pub(crate) struct ExpectedBuiltinIdent {
3389    #[primary_span]
3390    pub span: Span,
3391}
3392
3393#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            StaticWithGenerics 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 {
                    StaticWithGenerics { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_static_with_generics);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3394#[diag(parse_static_with_generics)]
3395pub(crate) struct StaticWithGenerics {
3396    #[primary_span]
3397    pub span: Span,
3398}
3399
3400#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            WhereClauseBeforeConstBody 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 {
                    WhereClauseBeforeConstBody {
                        span: __binding_0,
                        name: __binding_1,
                        body: __binding_2,
                        sugg: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_where_clause_before_const_body);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::parse_name_label);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::parse_body_label);
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3401#[diag(parse_where_clause_before_const_body)]
3402pub(crate) struct WhereClauseBeforeConstBody {
3403    #[primary_span]
3404    #[label]
3405    pub span: Span,
3406    #[label(parse_name_label)]
3407    pub name: Span,
3408    #[label(parse_body_label)]
3409    pub body: Span,
3410    #[subdiagnostic]
3411    pub sugg: Option<WhereClauseBeforeConstBodySugg>,
3412}
3413
3414#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for WhereClauseBeforeConstBodySugg {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    WhereClauseBeforeConstBodySugg {
                        left: __binding_0, snippet: __binding_1, right: __binding_2
                        } => {
                        let mut suggestions = Vec::new();
                        let __code_222 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("= {0} ", __binding_1))
                                });
                        let __code_223 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        suggestions.push((__binding_0, __code_222));
                        suggestions.push((__binding_2, __code_223));
                        diag.store_args();
                        diag.arg("snippet", __binding_1);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3415#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
3416pub(crate) struct WhereClauseBeforeConstBodySugg {
3417    #[suggestion_part(code = "= {snippet} ")]
3418    pub left: Span,
3419    pub snippet: String,
3420    #[suggestion_part(code = "")]
3421    pub right: Span,
3422}
3423
3424#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            GenericArgsInPatRequireTurbofishSyntax 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 {
                    GenericArgsInPatRequireTurbofishSyntax {
                        span: __binding_0, suggest_turbofish: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_generic_args_in_pat_require_turbofish_syntax);
                        let __code_224 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("::"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::parse_sugg_turbofish_syntax,
                            __code_224, rustc_errors::Applicability::MaybeIncorrect,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3425#[diag(parse_generic_args_in_pat_require_turbofish_syntax)]
3426pub(crate) struct GenericArgsInPatRequireTurbofishSyntax {
3427    #[primary_span]
3428    pub span: Span,
3429    #[suggestion(
3430        parse_sugg_turbofish_syntax,
3431        style = "verbose",
3432        code = "::",
3433        applicability = "maybe-incorrect"
3434    )]
3435    pub suggest_turbofish: Span,
3436}
3437
3438#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            TransposeDynOrImpl<'a> where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    TransposeDynOrImpl {
                        span: __binding_0, kw: __binding_1, sugg: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_transpose_dyn_or_impl);
                        ;
                        diag.arg("kw", __binding_1);
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_2);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3439#[diag(parse_transpose_dyn_or_impl)]
3440pub(crate) struct TransposeDynOrImpl<'a> {
3441    #[primary_span]
3442    pub span: Span,
3443    pub kw: &'a str,
3444    #[subdiagnostic]
3445    pub sugg: TransposeDynOrImplSugg<'a>,
3446}
3447
3448#[derive(const _: () =
    {
        impl<'a> rustc_errors::Subdiagnostic for TransposeDynOrImplSugg<'a> {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    TransposeDynOrImplSugg {
                        removal_span: __binding_0,
                        insertion_span: __binding_1,
                        kw: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_225 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_226 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0} ", __binding_2))
                                });
                        suggestions.push((__binding_0, __code_225));
                        suggestions.push((__binding_1, __code_226));
                        diag.store_args();
                        diag.arg("kw", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3449#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
3450pub(crate) struct TransposeDynOrImplSugg<'a> {
3451    #[suggestion_part(code = "")]
3452    pub removal_span: Span,
3453    #[suggestion_part(code = "{kw} ")]
3454    pub insertion_span: Span,
3455    pub kw: &'a str,
3456}
3457
3458#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ArrayIndexInOffsetOf 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 {
                    ArrayIndexInOffsetOf(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_array_index_offset_of);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3459#[diag(parse_array_index_offset_of)]
3460pub(crate) struct ArrayIndexInOffsetOf(#[primary_span] pub Span);
3461
3462#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            InvalidOffsetOf 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 {
                    InvalidOffsetOf(__binding_0) => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_invalid_offset_of);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3463#[diag(parse_invalid_offset_of)]
3464pub(crate) struct InvalidOffsetOf(#[primary_span] pub Span);
3465
3466#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AsyncImpl
            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 {
                    AsyncImpl { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_async_impl);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3467#[diag(parse_async_impl)]
3468pub(crate) struct AsyncImpl {
3469    #[primary_span]
3470    pub span: Span,
3471}
3472
3473#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for ExprRArrowCall
            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 {
                    ExprRArrowCall { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_expr_rarrow_call);
                        let __code_227 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("."))
                                            })].into_iter();
                        diag.help(crate::fluent_generated::_subdiag::help);
                        ;
                        diag.span(__binding_0);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_227,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3474#[diag(parse_expr_rarrow_call)]
3475#[help]
3476pub(crate) struct ExprRArrowCall {
3477    #[primary_span]
3478    #[suggestion(style = "verbose", applicability = "machine-applicable", code = ".")]
3479    pub span: Span,
3480}
3481
3482#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            DotDotRangeAttribute 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 {
                    DotDotRangeAttribute { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_dot_dot_range_attribute);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3483#[diag(parse_dot_dot_range_attribute)]
3484pub(crate) struct DotDotRangeAttribute {
3485    #[primary_span]
3486    pub span: Span,
3487}
3488
3489#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BinderBeforeModifiers 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 {
                    BinderBeforeModifiers {
                        binder_span: __binding_0, modifiers_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_binder_before_modifiers);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3490#[diag(parse_binder_before_modifiers)]
3491pub(crate) struct BinderBeforeModifiers {
3492    #[primary_span]
3493    pub binder_span: Span,
3494    #[label]
3495    pub modifiers_span: Span,
3496}
3497
3498#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            BinderAndPolarity 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 {
                    BinderAndPolarity {
                        polarity_span: __binding_0,
                        binder_span: __binding_1,
                        polarity: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_binder_and_polarity);
                        ;
                        diag.arg("polarity", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3499#[diag(parse_binder_and_polarity)]
3500pub(crate) struct BinderAndPolarity {
3501    #[primary_span]
3502    pub polarity_span: Span,
3503    #[label]
3504    pub binder_span: Span,
3505    pub polarity: &'static str,
3506}
3507
3508#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            PolarityAndModifiers 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 {
                    PolarityAndModifiers {
                        polarity_span: __binding_0,
                        modifiers_span: __binding_1,
                        polarity: __binding_2,
                        modifiers_concatenated: __binding_3 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_modifiers_and_polarity);
                        ;
                        diag.arg("polarity", __binding_2);
                        diag.arg("modifiers_concatenated", __binding_3);
                        diag.span(__binding_0);
                        diag.span_label(__binding_1,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3509#[diag(parse_modifiers_and_polarity)]
3510pub(crate) struct PolarityAndModifiers {
3511    #[primary_span]
3512    pub polarity_span: Span,
3513    #[label]
3514    pub modifiers_span: Span,
3515    pub polarity: &'static str,
3516    pub modifiers_concatenated: String,
3517}
3518
3519#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            IncorrectTypeOnSelf 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 {
                    IncorrectTypeOnSelf {
                        span: __binding_0, move_self_modifier: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_incorrect_type_on_self);
                        ;
                        diag.span(__binding_0);
                        diag.subdiagnostic(__binding_1);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3520#[diag(parse_incorrect_type_on_self)]
3521pub(crate) struct IncorrectTypeOnSelf {
3522    #[primary_span]
3523    pub span: Span,
3524    #[subdiagnostic]
3525    pub move_self_modifier: MoveSelfModifier,
3526}
3527
3528#[derive(const _: () =
    {
        impl rustc_errors::Subdiagnostic for MoveSelfModifier {
            fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
                where __G: rustc_errors::EmissionGuarantee {
                match self {
                    MoveSelfModifier {
                        removal_span: __binding_0,
                        insertion_span: __binding_1,
                        modifier: __binding_2 } => {
                        let mut suggestions = Vec::new();
                        let __code_228 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!(""))
                                });
                        let __code_229 =
                            ::alloc::__export::must_use({
                                    ::alloc::fmt::format(format_args!("{0}", __binding_2))
                                });
                        suggestions.push((__binding_0, __code_228));
                        suggestions.push((__binding_1, __code_229));
                        diag.store_args();
                        diag.arg("modifier", __binding_2);
                        let __message =
                            diag.eagerly_translate(crate::fluent_generated::parse_suggestion);
                        diag.multipart_suggestion_with_style(__message, suggestions,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag.restore_args();
                    }
                }
            }
        }
    };Subdiagnostic)]
3529#[multipart_suggestion(parse_suggestion, applicability = "machine-applicable")]
3530pub(crate) struct MoveSelfModifier {
3531    #[suggestion_part(code = "")]
3532    pub removal_span: Span,
3533    #[suggestion_part(code = "{modifier}")]
3534    pub insertion_span: Span,
3535    pub modifier: String,
3536}
3537
3538#[derive(const _: () =
    {
        impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmUnsupportedOperand<'a> where G: rustc_errors::EmissionGuarantee
            {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmUnsupportedOperand {
                        span: __binding_0,
                        symbol: __binding_1,
                        macro_name: __binding_2 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_unsupported_operand);
                        ;
                        diag.arg("symbol", __binding_1);
                        diag.arg("macro_name", __binding_2);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3539#[diag(parse_asm_unsupported_operand)]
3540pub(crate) struct AsmUnsupportedOperand<'a> {
3541    #[primary_span]
3542    #[label]
3543    pub(crate) span: Span,
3544    pub(crate) symbol: &'a str,
3545    pub(crate) macro_name: &'static str,
3546}
3547
3548#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmUnderscoreInput 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 {
                    AsmUnderscoreInput { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_underscore_input);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3549#[diag(parse_asm_underscore_input)]
3550pub(crate) struct AsmUnderscoreInput {
3551    #[primary_span]
3552    pub(crate) span: Span,
3553}
3554
3555#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for AsmSymNoPath
            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 {
                    AsmSymNoPath { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_sym_no_path);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3556#[diag(parse_asm_sym_no_path)]
3557pub(crate) struct AsmSymNoPath {
3558    #[primary_span]
3559    pub(crate) span: Span,
3560}
3561
3562#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmRequiresTemplate 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 {
                    AsmRequiresTemplate { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_requires_template);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3563#[diag(parse_asm_requires_template)]
3564pub(crate) struct AsmRequiresTemplate {
3565    #[primary_span]
3566    pub(crate) span: Span,
3567}
3568
3569#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmExpectedComma 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 {
                    AsmExpectedComma { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_expected_comma);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3570#[diag(parse_asm_expected_comma)]
3571pub(crate) struct AsmExpectedComma {
3572    #[primary_span]
3573    #[label]
3574    pub(crate) span: Span,
3575}
3576
3577#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmExpectedOther where G: rustc_errors::EmissionGuarantee {
            #[track_caller]
            fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
                level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
                match self {
                    AsmExpectedOther {
                        span: __binding_0, is_inline_asm: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_expected_other);
                        ;
                        diag.arg("is_inline_asm", __binding_1);
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::parse_asm_expected_other);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3578#[diag(parse_asm_expected_other)]
3579pub(crate) struct AsmExpectedOther {
3580    #[primary_span]
3581    #[label(parse_asm_expected_other)]
3582    pub(crate) span: Span,
3583    pub(crate) is_inline_asm: bool,
3584}
3585
3586#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for NonABI 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 {
                    NonABI { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_non_abi);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3587#[diag(parse_asm_non_abi)]
3588pub(crate) struct NonABI {
3589    #[primary_span]
3590    pub(crate) span: Span,
3591}
3592
3593#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            AsmExpectedStringLiteral 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 {
                    AsmExpectedStringLiteral { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_expected_string_literal);
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3594#[diag(parse_asm_expected_string_literal)]
3595pub(crate) struct AsmExpectedStringLiteral {
3596    #[primary_span]
3597    #[label]
3598    pub(crate) span: Span,
3599}
3600
3601#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ExpectedRegisterClassOrExplicitRegister 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 {
                    ExpectedRegisterClassOrExplicitRegister { span: __binding_0
                        } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_asm_expected_register_class_or_explicit_register);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3602#[diag(parse_asm_expected_register_class_or_explicit_register)]
3603pub(crate) struct ExpectedRegisterClassOrExplicitRegister {
3604    #[primary_span]
3605    pub(crate) span: Span,
3606}
3607
3608#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            HiddenUnicodeCodepointsDiag {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    HiddenUnicodeCodepointsDiag {
                        label: __binding_0,
                        count: __binding_1,
                        span_label: __binding_2,
                        labels: __binding_3,
                        sub: __binding_4 } => {
                        diag.primary_message(crate::fluent_generated::parse_hidden_unicode_codepoints);
                        diag.note(crate::fluent_generated::_subdiag::note);
                        ;
                        diag.arg("label", __binding_0);
                        diag.arg("count", __binding_1);
                        diag.span_label(__binding_2,
                            crate::fluent_generated::_subdiag::label);
                        if let Some(__binding_3) = __binding_3 {
                            diag.subdiagnostic(__binding_3);
                        }
                        diag.subdiagnostic(__binding_4);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3609#[diag(parse_hidden_unicode_codepoints)]
3610#[note]
3611pub(crate) struct HiddenUnicodeCodepointsDiag {
3612    pub label: String,
3613    pub count: usize,
3614    #[label]
3615    pub span_label: Span,
3616    #[subdiagnostic]
3617    pub labels: Option<HiddenUnicodeCodepointsDiagLabels>,
3618    #[subdiagnostic]
3619    pub sub: HiddenUnicodeCodepointsDiagSub,
3620}
3621
3622pub(crate) struct HiddenUnicodeCodepointsDiagLabels {
3623    pub spans: Vec<(char, Span)>,
3624}
3625
3626impl Subdiagnostic for HiddenUnicodeCodepointsDiagLabels {
3627    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
3628        for (c, span) in self.spans {
3629            diag.span_label(span, ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("{0:?}", c))
    })format!("{c:?}"));
3630        }
3631    }
3632}
3633
3634pub(crate) enum HiddenUnicodeCodepointsDiagSub {
3635    Escape { spans: Vec<(char, Span)> },
3636    NoEscape { spans: Vec<(char, Span)> },
3637}
3638
3639// Used because of multiple multipart_suggestion and note
3640impl Subdiagnostic for HiddenUnicodeCodepointsDiagSub {
3641    fn add_to_diag<G: EmissionGuarantee>(self, diag: &mut Diag<'_, G>) {
3642        match self {
3643            HiddenUnicodeCodepointsDiagSub::Escape { spans } => {
3644                diag.multipart_suggestion_with_style(
3645                    fluent::parse_suggestion_remove,
3646                    spans.iter().map(|(_, span)| (*span, "".to_string())).collect(),
3647                    Applicability::MachineApplicable,
3648                    SuggestionStyle::HideCodeAlways,
3649                );
3650                diag.multipart_suggestion(
3651                    fluent::parse_suggestion_escape,
3652                    spans
3653                        .into_iter()
3654                        .map(|(c, span)| {
3655                            let c = ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("{0:?}", c))
    })format!("{c:?}");
3656                            (span, c[1..c.len() - 1].to_string())
3657                        })
3658                        .collect(),
3659                    Applicability::MachineApplicable,
3660                );
3661            }
3662            HiddenUnicodeCodepointsDiagSub::NoEscape { spans } => {
3663                // FIXME: in other suggestions we've reversed the inner spans of doc comments. We
3664                // should do the same here to provide the same good suggestions as we do for
3665                // literals above.
3666                diag.arg(
3667                    "escaped",
3668                    spans
3669                        .into_iter()
3670                        .map(|(c, _)| ::alloc::__export::must_use({
        ::alloc::fmt::format(format_args!("{0:?}", c))
    })format!("{c:?}"))
3671                        .collect::<Vec<String>>()
3672                        .join(", "),
3673                );
3674                diag.note(fluent::parse_suggestion_remove);
3675                diag.note(fluent::parse_no_suggestion_note_escape);
3676            }
3677        }
3678    }
3679}
3680
3681#[derive(const _: () =
    {
        impl<'__a> rustc_errors::LintDiagnostic<'__a, ()> for
            VarargsWithoutPattern {
            #[track_caller]
            fn decorate_lint<'__b>(self,
                diag: &'__b mut rustc_errors::Diag<'__a, ()>) {
                match self {
                    VarargsWithoutPattern { span: __binding_0 } => {
                        diag.primary_message(crate::fluent_generated::parse_varargs_without_pattern);
                        ;
                        let __code_230 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("_: ..."))
                                            })].into_iter();
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_230,
                            rustc_errors::Applicability::MachineApplicable,
                            rustc_errors::SuggestionStyle::ShowCode);
                        diag
                    }
                };
            }
        }
    };LintDiagnostic)]
3682#[diag(parse_varargs_without_pattern)]
3683pub(crate) struct VarargsWithoutPattern {
3684    #[suggestion(code = "_: ...", applicability = "machine-applicable")]
3685    pub span: Span,
3686}
3687
3688#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            ImplReuseInherentImpl 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 {
                    ImplReuseInherentImpl { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_delegation_non_trait_impl_reuse);
                        ;
                        diag.span(__binding_0);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3689#[diag(parse_delegation_non_trait_impl_reuse)]
3690pub(crate) struct ImplReuseInherentImpl {
3691    #[primary_span]
3692    pub span: Span,
3693}
3694
3695#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            StructLiteralPlaceholderPath 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 {
                    StructLiteralPlaceholderPath { span: __binding_0 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_struct_literal_placeholder_path);
                        let __code_231 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("/* Type */"))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_0,
                            crate::fluent_generated::_subdiag::suggestion, __code_231,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3696#[diag(parse_struct_literal_placeholder_path)]
3697pub(crate) struct StructLiteralPlaceholderPath {
3698    #[primary_span]
3699    #[label]
3700    #[suggestion(applicability = "has-placeholders", code = "/* Type */", style = "verbose")]
3701    pub span: Span,
3702}
3703
3704#[derive(const _: () =
    {
        impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
            StructLiteralWithoutPathLate 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 {
                    StructLiteralWithoutPathLate {
                        span: __binding_0, suggestion_span: __binding_1 } => {
                        let mut diag =
                            rustc_errors::Diag::new(dcx, level,
                                crate::fluent_generated::parse_struct_literal_body_without_path_late);
                        let __code_232 =
                            [::alloc::__export::must_use({
                                                ::alloc::fmt::format(format_args!("/* Type */ "))
                                            })].into_iter();
                        ;
                        diag.span(__binding_0);
                        diag.span_label(__binding_0,
                            crate::fluent_generated::_subdiag::label);
                        diag.span_suggestions_with_style(__binding_1,
                            crate::fluent_generated::_subdiag::suggestion, __code_232,
                            rustc_errors::Applicability::HasPlaceholders,
                            rustc_errors::SuggestionStyle::ShowAlways);
                        diag
                    }
                }
            }
        }
    };Diagnostic)]
3705#[diag(parse_struct_literal_body_without_path_late)]
3706pub(crate) struct StructLiteralWithoutPathLate {
3707    #[primary_span]
3708    #[label]
3709    pub span: Span,
3710    #[suggestion(applicability = "has-placeholders", code = "/* Type */ ", style = "verbose")]
3711    pub suggestion_span: Span,
3712}