1use rustc_errors::codes::*;
2use rustc_errors::{DiagArgFromDisplay, DiagSymbolList};
3use rustc_macros::{Diagnostic, Subdiagnostic};
4use rustc_span::{Ident, Span, Symbol};
5
6#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
GenericTypeWithParentheses where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
GenericTypeWithParentheses {
span: __binding_0, sub: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("parenthesized type parameters may only be used with a `Fn` trait")));
diag.code(E0214);
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only `Fn` traits may use parentheses")));
if let Some(__binding_1) = __binding_1 {
diag.subdiagnostic(__binding_1);
}
diag
}
}
}
}
};Diagnostic)]
7#[diag("parenthesized type parameters may only be used with a `Fn` trait", code = E0214)]
8pub(crate) struct GenericTypeWithParentheses {
9 #[primary_span]
10 #[label("only `Fn` traits may use parentheses")]
11 pub span: Span,
12 #[subdiagnostic]
13 pub sub: Option<UseAngleBrackets>,
14}
15
16#[derive(const _: () =
{
impl rustc_errors::Subdiagnostic for UseAngleBrackets {
fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
where __G: rustc_errors::EmissionGuarantee {
match self {
UseAngleBrackets {
open_param: __binding_0, close_param: __binding_1 } => {
let mut suggestions = Vec::new();
let __code_0 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("<"))
});
let __code_1 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!(">"))
});
suggestions.push((__binding_0, __code_0));
suggestions.push((__binding_1, __code_1));
let mut sub_args = rustc_errors::DiagArgMap::default();
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use angle brackets instead")),
&sub_args);
diag.multipart_suggestion_with_style(__message, suggestions,
rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowCode);
}
}
}
}
};Subdiagnostic)]
17#[multipart_suggestion("use angle brackets instead", applicability = "maybe-incorrect")]
18pub(crate) struct UseAngleBrackets {
19 #[suggestion_part(code = "<")]
20 pub open_param: Span,
21 #[suggestion_part(code = ">")]
22 pub close_param: Span,
23}
24
25#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for InvalidAbi
where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidAbi {
span: __binding_0,
abi: __binding_1,
command: __binding_2,
suggestion: __binding_3 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid ABI: found `{$abi}`")));
diag.code(E0703);
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invoke `{$command}` for a full list of supported calling conventions")));
;
diag.arg("abi", __binding_1);
diag.arg("command", __binding_2);
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid ABI")));
if let Some(__binding_3) = __binding_3 {
diag.subdiagnostic(__binding_3);
}
diag
}
}
}
}
};Diagnostic)]
26#[diag("invalid ABI: found `{$abi}`", code = E0703)]
27#[note("invoke `{$command}` for a full list of supported calling conventions")]
28pub(crate) struct InvalidAbi {
29 #[primary_span]
30 #[label("invalid ABI")]
31 pub span: Span,
32 pub abi: Symbol,
33 pub command: String,
34 #[subdiagnostic]
35 pub suggestion: Option<InvalidAbiSuggestion>,
36}
37
38#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
TupleStructWithDefault where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
TupleStructWithDefault { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("default fields are not supported in tuple structs")));
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("default fields are only supported on structs")));
diag
}
}
}
}
};Diagnostic)]
39#[diag("default fields are not supported in tuple structs")]
40pub(crate) struct TupleStructWithDefault {
41 #[primary_span]
42 #[label("default fields are only supported on structs")]
43 pub span: Span,
44}
45
46#[derive(const _: () =
{
impl rustc_errors::Subdiagnostic for InvalidAbiSuggestion {
fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
where __G: rustc_errors::EmissionGuarantee {
match self {
InvalidAbiSuggestion {
span: __binding_0, suggestion: __binding_1 } => {
let __code_2 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!("\"{0}\"", __binding_1))
})].into_iter();
let mut sub_args = rustc_errors::DiagArgMap::default();
sub_args.insert("suggestion".into(),
rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
&mut diag.long_ty_path));
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("there's a similarly named valid ABI `{$suggestion}`")),
&sub_args);
diag.span_suggestions_with_style(__binding_0, __message,
__code_2, rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowAlways);
}
}
}
}
};Subdiagnostic)]
47#[suggestion(
48 "there's a similarly named valid ABI `{$suggestion}`",
49 code = "\"{suggestion}\"",
50 applicability = "maybe-incorrect",
51 style = "verbose"
52)]
53pub(crate) struct InvalidAbiSuggestion {
54 #[primary_span]
55 pub span: Span,
56 pub suggestion: String,
57}
58
59#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AssocTyParentheses where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AssocTyParentheses { span: __binding_0, sub: __binding_1 }
=> {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("parenthesized generic arguments cannot be used in associated type constraints")));
;
diag.span(__binding_0);
diag.subdiagnostic(__binding_1);
diag
}
}
}
}
};Diagnostic)]
60#[diag("parenthesized generic arguments cannot be used in associated type constraints")]
61pub(crate) struct AssocTyParentheses {
62 #[primary_span]
63 pub span: Span,
64 #[subdiagnostic]
65 pub sub: AssocTyParenthesesSub,
66}
67
68#[derive(const _: () =
{
impl rustc_errors::Subdiagnostic for AssocTyParenthesesSub {
fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
where __G: rustc_errors::EmissionGuarantee {
match self {
AssocTyParenthesesSub::Empty { parentheses_span: __binding_0
} => {
let mut suggestions = Vec::new();
let __code_3 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!(""))
});
suggestions.push((__binding_0, __code_3));
let mut sub_args = rustc_errors::DiagArgMap::default();
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove these parentheses")),
&sub_args);
diag.multipart_suggestion_with_style(__message, suggestions,
rustc_errors::Applicability::Unspecified,
rustc_errors::SuggestionStyle::ShowCode);
}
AssocTyParenthesesSub::NotEmpty {
open_param: __binding_0, close_param: __binding_1 } => {
let mut suggestions = Vec::new();
let __code_4 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("<"))
});
let __code_5 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!(">"))
});
suggestions.push((__binding_0, __code_4));
suggestions.push((__binding_1, __code_5));
let mut sub_args = rustc_errors::DiagArgMap::default();
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use angle brackets instead")),
&sub_args);
diag.multipart_suggestion_with_style(__message, suggestions,
rustc_errors::Applicability::Unspecified,
rustc_errors::SuggestionStyle::ShowCode);
}
}
}
}
};Subdiagnostic)]
69pub(crate) enum AssocTyParenthesesSub {
70 #[multipart_suggestion("remove these parentheses")]
71 Empty {
72 #[suggestion_part(code = "")]
73 parentheses_span: Span,
74 },
75 #[multipart_suggestion("use angle brackets instead")]
76 NotEmpty {
77 #[suggestion_part(code = "<")]
78 open_param: Span,
79 #[suggestion_part(code = ">")]
80 close_param: Span,
81 },
82}
83
84#[derive(const _: () =
{
impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
MisplacedImplTrait<'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 {
MisplacedImplTrait {
span: __binding_0, position: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`impl Trait` is not allowed in {$position}")));
diag.code(E0562);
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`impl Trait` is only allowed in arguments and return types of functions and methods")));
;
diag.arg("position", __binding_1);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
85#[diag("`impl Trait` is not allowed in {$position}", code = E0562)]
86#[note("`impl Trait` is only allowed in arguments and return types of functions and methods")]
87pub(crate) struct MisplacedImplTrait<'a> {
88 #[primary_span]
89 pub span: Span,
90 pub position: DiagArgFromDisplay<'a>,
91}
92
93#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
MisplacedAssocTyBinding where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
MisplacedAssocTyBinding {
span: __binding_0, suggestion: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("associated type bounds are not allowed in `dyn` types")));
let __code_6 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!(" = impl"))
})].into_iter();
;
diag.span(__binding_0);
if let Some(__binding_1) = __binding_1 {
diag.span_suggestions_with_style(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use `impl Trait` to introduce a type instead")),
__code_6, rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowAlways);
}
diag
}
}
}
}
};Diagnostic)]
94#[diag("associated type bounds are not allowed in `dyn` types")]
95pub(crate) struct MisplacedAssocTyBinding {
96 #[primary_span]
97 pub span: Span,
98 #[suggestion(
99 "use `impl Trait` to introduce a type instead",
100 code = " = impl",
101 applicability = "maybe-incorrect",
102 style = "verbose"
103 )]
104 pub suggestion: Option<Span>,
105}
106
107#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
UnderscoreExprLhsAssign where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
UnderscoreExprLhsAssign { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("in expressions, `_` can only be used on the left-hand side of an assignment")));
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`_` not allowed here")));
diag
}
}
}
}
};Diagnostic)]
108#[diag("in expressions, `_` can only be used on the left-hand side of an assignment")]
109pub(crate) struct UnderscoreExprLhsAssign {
110 #[primary_span]
111 #[label("`_` not allowed here")]
112 pub span: Span,
113}
114
115#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AwaitOnlyInAsyncFnAndBlocks where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AwaitOnlyInAsyncFnAndBlocks {
await_kw_span: __binding_0, item_span: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`await` is only allowed inside `async` functions and blocks")));
diag.code(E0728);
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only allowed inside `async` functions and blocks")));
if let Some(__binding_1) = __binding_1 {
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this is not `async`")));
}
diag
}
}
}
}
};Diagnostic)]
116#[diag("`await` is only allowed inside `async` functions and blocks", code = E0728)]
117pub(crate) struct AwaitOnlyInAsyncFnAndBlocks {
118 #[primary_span]
119 #[label("only allowed inside `async` functions and blocks")]
120 pub await_kw_span: Span,
121 #[label("this is not `async`")]
122 pub item_span: Option<Span>,
123}
124
125#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
ConstComptimeFn where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
ConstComptimeFn { span: __binding_0, attr_span: __binding_1
} => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("a function cannot be both `comptime` and `const`")));
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,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the `const`")),
__code_7, rustc_errors::Applicability::MachineApplicable,
rustc_errors::SuggestionStyle::ShowCode);
diag.span_note(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`const` implies the function can be called at runtime, too")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`comptime` because of this")));
diag
}
}
}
}
};Diagnostic)]
126#[diag("a function cannot be both `comptime` and `const`")]
127pub(crate) struct ConstComptimeFn {
128 #[primary_span]
129 #[suggestion("remove the `const`", applicability = "machine-applicable", code = "")]
130 #[note("`const` implies the function can be called at runtime, too")]
131 pub span: Span,
132 #[label("`comptime` because of this")]
133 pub attr_span: Span,
134}
135
136#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
CoroutineTooManyParameters where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
CoroutineTooManyParameters { fn_decl_span: __binding_0 } =>
{
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("too many parameters for a coroutine (expected 0 or 1 parameters)")));
diag.code(E0628);
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
137#[diag("too many parameters for a coroutine (expected 0 or 1 parameters)", code = E0628)]
138pub(crate) struct CoroutineTooManyParameters {
139 #[primary_span]
140 pub fn_decl_span: Span,
141}
142
143#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
ClosureCannotBeStatic where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
ClosureCannotBeStatic { fn_decl_span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("closures cannot be static")));
diag.code(E0697);
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
144#[diag("closures cannot be static", code = E0697)]
145pub(crate) struct ClosureCannotBeStatic {
146 #[primary_span]
147 pub fn_decl_span: Span,
148}
149
150#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
MoveExprOnlyInPlainClosures where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
MoveExprOnlyInPlainClosures { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`move(expr)` is only supported in plain closures")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
151#[diag("`move(expr)` is only supported in plain closures")]
152pub(crate) struct MoveExprOnlyInPlainClosures {
153 #[primary_span]
154 pub span: Span,
155}
156
157#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
FunctionalRecordUpdateDestructuringAssignment where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
FunctionalRecordUpdateDestructuringAssignment {
span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("functional record updates are not allowed in destructuring assignments")));
let __code_8 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!(""))
})].into_iter();
;
diag.span(__binding_0);
diag.span_suggestions_with_style(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("consider removing the trailing pattern")),
__code_8, rustc_errors::Applicability::MachineApplicable,
rustc_errors::SuggestionStyle::ShowCode);
diag
}
}
}
}
};Diagnostic)]
158#[diag("functional record updates are not allowed in destructuring assignments")]
159pub(crate) struct FunctionalRecordUpdateDestructuringAssignment {
160 #[primary_span]
161 #[suggestion(
162 "consider removing the trailing pattern",
163 code = "",
164 applicability = "machine-applicable"
165 )]
166 pub span: Span,
167}
168
169#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AsyncCoroutinesNotSupported where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AsyncCoroutinesNotSupported { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`async` coroutines are not yet supported")));
diag.code(E0727);
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
170#[diag("`async` coroutines are not yet supported", code = E0727)]
171pub(crate) struct AsyncCoroutinesNotSupported {
172 #[primary_span]
173 pub span: Span,
174}
175
176#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InlineAsmUnsupportedTarget where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InlineAsmUnsupportedTarget { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("inline assembly is unsupported on this target")));
diag.code(E0472);
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
177#[diag("inline assembly is unsupported on this target", code = E0472)]
178pub(crate) struct InlineAsmUnsupportedTarget {
179 #[primary_span]
180 pub span: Span,
181}
182
183#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AttSyntaxOnlyX86 where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AttSyntaxOnlyX86 { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `att_syntax` option is only supported on x86")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
184#[diag("the `att_syntax` option is only supported on x86")]
185pub(crate) struct AttSyntaxOnlyX86 {
186 #[primary_span]
187 pub span: Span,
188}
189
190#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AbiSpecifiedMultipleTimes where G: rustc_errors::EmissionGuarantee
{
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AbiSpecifiedMultipleTimes {
abi_span: __binding_0,
prev_name: __binding_1,
prev_span: __binding_2,
equivalent: __binding_3 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$prev_name}` ABI specified multiple times")));
;
diag.arg("prev_name", __binding_1);
diag.span(__binding_0);
diag.span_label(__binding_2,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("previously specified here")));
if __binding_3 {
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("these ABIs are equivalent on the current target")));
}
diag
}
}
}
}
};Diagnostic)]
191#[diag("`{$prev_name}` ABI specified multiple times")]
192pub(crate) struct AbiSpecifiedMultipleTimes {
193 #[primary_span]
194 pub abi_span: Span,
195 pub prev_name: Symbol,
196 #[label("previously specified here")]
197 pub prev_span: Span,
198 #[note("these ABIs are equivalent on the current target")]
199 pub equivalent: bool,
200}
201
202#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
ClobberAbiNotSupported where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
ClobberAbiNotSupported { abi_span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`clobber_abi` is not supported on this target")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
203#[diag("`clobber_abi` is not supported on this target")]
204pub(crate) struct ClobberAbiNotSupported {
205 #[primary_span]
206 pub abi_span: Span,
207}
208
209#[derive(const _: () =
{
impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidAbiClobberAbi<'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 {
InvalidAbiClobberAbi {
abi_span: __binding_0, supported_abis: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid ABI for `clobber_abi`")));
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the following ABIs are supported on this target: {$supported_abis}")));
;
diag.arg("supported_abis", __binding_1);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
210#[note("the following ABIs are supported on this target: {$supported_abis}")]
211#[diag("invalid ABI for `clobber_abi`")]
212pub(crate) struct InvalidAbiClobberAbi<'a> {
213 #[primary_span]
214 pub abi_span: Span,
215 pub supported_abis: DiagSymbolList<&'a str>,
216}
217
218#[derive(const _: () =
{
impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidRegister<'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 {
InvalidRegister {
op_span: __binding_0, reg: __binding_1, error: __binding_2 }
=> {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid register `{$reg}`: {$error}")));
;
diag.arg("reg", __binding_1);
diag.arg("error", __binding_2);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
219#[diag("invalid register `{$reg}`: {$error}")]
220pub(crate) struct InvalidRegister<'a> {
221 #[primary_span]
222 pub op_span: Span,
223 pub reg: Symbol,
224 pub error: &'a str,
225}
226
227#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidRegisterClass where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidRegisterClass {
op_span: __binding_0,
reg_class: __binding_1,
supported_register_classes: __binding_2 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid register class `{$reg_class}`: unknown register class")));
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the following register classes are supported on this target: {$supported_register_classes}")));
;
diag.arg("reg_class", __binding_1);
diag.arg("supported_register_classes", __binding_2);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
228#[note(
229 "the following register classes are supported on this target: {$supported_register_classes}"
230)]
231#[diag("invalid register class `{$reg_class}`: unknown register class")]
232pub(crate) struct InvalidRegisterClass {
233 #[primary_span]
234 pub op_span: Span,
235 pub reg_class: Symbol,
236 pub supported_register_classes: DiagSymbolList<Symbol>,
237}
238
239#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidAsmTemplateModifierRegClass where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidAsmTemplateModifierRegClass {
placeholder_span: __binding_0,
op_span: __binding_1,
modifier: __binding_2,
sub: __binding_3 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid asm template modifier `{$modifier}` for this register class")));
;
diag.arg("modifier", __binding_2);
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("template modifier")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("argument")));
diag.subdiagnostic(__binding_3);
diag
}
}
}
}
};Diagnostic)]
240#[diag("invalid asm template modifier `{$modifier}` for this register class")]
241pub(crate) struct InvalidAsmTemplateModifierRegClass {
242 #[primary_span]
243 #[label("template modifier")]
244 pub placeholder_span: Span,
245 #[label("argument")]
246 pub op_span: Span,
247 pub modifier: String,
248 #[subdiagnostic]
249 pub sub: InvalidAsmTemplateModifierRegClassSub,
250}
251
252#[derive(const _: () =
{
impl rustc_errors::Subdiagnostic for
InvalidAsmTemplateModifierRegClassSub {
fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
where __G: rustc_errors::EmissionGuarantee {
match self {
InvalidAsmTemplateModifierRegClassSub::SupportModifier {
class_name: __binding_0, modifiers: __binding_1 } => {
let mut sub_args = rustc_errors::DiagArgMap::default();
sub_args.insert("class_name".into(),
rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
&mut diag.long_ty_path));
sub_args.insert("modifiers".into(),
rustc_errors::IntoDiagArg::into_diag_arg(__binding_1,
&mut diag.long_ty_path));
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `{$class_name}` register class supports the following template modifiers: {$modifiers}")),
&sub_args);
diag.note(__message);
}
InvalidAsmTemplateModifierRegClassSub::DoesNotSupportModifier {
class_name: __binding_0 } => {
let mut sub_args = rustc_errors::DiagArgMap::default();
sub_args.insert("class_name".into(),
rustc_errors::IntoDiagArg::into_diag_arg(__binding_0,
&mut diag.long_ty_path));
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `{$class_name}` register class does not support template modifiers")),
&sub_args);
diag.note(__message);
}
}
}
}
};Subdiagnostic)]
253pub(crate) enum InvalidAsmTemplateModifierRegClassSub {
254 #[note(
255 "the `{$class_name}` register class supports the following template modifiers: {$modifiers}"
256 )]
257 SupportModifier { class_name: Symbol, modifiers: DiagSymbolList<char> },
258 #[note("the `{$class_name}` register class does not support template modifiers")]
259 DoesNotSupportModifier { class_name: Symbol },
260}
261
262#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidAsmTemplateModifierConst where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidAsmTemplateModifierConst {
placeholder_span: __binding_0, op_span: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm template modifiers are not allowed for `const` arguments")));
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("template modifier")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("argument")));
diag
}
}
}
}
};Diagnostic)]
263#[diag("asm template modifiers are not allowed for `const` arguments")]
264pub(crate) struct InvalidAsmTemplateModifierConst {
265 #[primary_span]
266 #[label("template modifier")]
267 pub placeholder_span: Span,
268 #[label("argument")]
269 pub op_span: Span,
270}
271
272#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidAsmTemplateModifierSym where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidAsmTemplateModifierSym {
placeholder_span: __binding_0, op_span: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm template modifiers are not allowed for `sym` arguments")));
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("template modifier")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("argument")));
diag
}
}
}
}
};Diagnostic)]
273#[diag("asm template modifiers are not allowed for `sym` arguments")]
274pub(crate) struct InvalidAsmTemplateModifierSym {
275 #[primary_span]
276 #[label("template modifier")]
277 pub placeholder_span: Span,
278 #[label("argument")]
279 pub op_span: Span,
280}
281
282#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidAsmTemplateModifierLabel where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidAsmTemplateModifierLabel {
placeholder_span: __binding_0, op_span: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("asm template modifiers are not allowed for `label` arguments")));
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("template modifier")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("argument")));
diag
}
}
}
}
};Diagnostic)]
283#[diag("asm template modifiers are not allowed for `label` arguments")]
284pub(crate) struct InvalidAsmTemplateModifierLabel {
285 #[primary_span]
286 #[label("template modifier")]
287 pub placeholder_span: Span,
288 #[label("argument")]
289 pub op_span: Span,
290}
291
292#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
RegisterClassOnlyClobber where G: rustc_errors::EmissionGuarantee
{
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
RegisterClassOnlyClobber {
op_span: __binding_0, reg_class_name: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("register class `{$reg_class_name}` can only be used as a clobber, not as an input or output")));
;
diag.arg("reg_class_name", __binding_1);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
293#[diag(
294 "register class `{$reg_class_name}` can only be used as a clobber, not as an input or output"
295)]
296pub(crate) struct RegisterClassOnlyClobber {
297 #[primary_span]
298 pub op_span: Span,
299 pub reg_class_name: Symbol,
300}
301
302#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
RegisterClassOnlyClobberStable where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
RegisterClassOnlyClobberStable {
op_span: __binding_0, reg_class_name: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("register class `{$reg_class_name}` can only be used as a clobber in stable")));
;
diag.arg("reg_class_name", __binding_1);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
303#[diag("register class `{$reg_class_name}` can only be used as a clobber in stable")]
304pub(crate) struct RegisterClassOnlyClobberStable {
305 #[primary_span]
306 pub op_span: Span,
307 pub reg_class_name: Symbol,
308}
309
310#[derive(const _: () =
{
impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
RegisterConflict<'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 {
RegisterConflict {
op_span1: __binding_0,
op_span2: __binding_1,
reg1_name: __binding_2,
reg2_name: __binding_3,
in_out: __binding_4 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("register `{$reg1_name}` conflicts with register `{$reg2_name}`")));
;
diag.arg("reg1_name", __binding_2);
diag.arg("reg2_name", __binding_3);
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("register `{$reg1_name}`")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("register `{$reg2_name}`")));
if let Some(__binding_4) = __binding_4 {
diag.span_help(__binding_4,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use `lateout` instead of `out` to avoid conflict")));
}
diag
}
}
}
}
};Diagnostic)]
311#[diag("register `{$reg1_name}` conflicts with register `{$reg2_name}`")]
312pub(crate) struct RegisterConflict<'a> {
313 #[primary_span]
314 #[label("register `{$reg1_name}`")]
315 pub op_span1: Span,
316 #[label("register `{$reg2_name}`")]
317 pub op_span2: Span,
318 pub reg1_name: &'a str,
319 pub reg2_name: &'a str,
320 #[help("use `lateout` instead of `out` to avoid conflict")]
321 pub in_out: Option<Span>,
322}
323
324#[derive(const _: () =
{
impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
SubTupleBinding<'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 {
SubTupleBinding {
span: __binding_0,
ident: __binding_1,
ident_name: __binding_2,
ctx: __binding_3 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`{$ident_name} @` is not allowed in a {$ctx}")));
let __code_9 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!(".."))
})].into_iter();
diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this and bind each tuple field independently")));
;
diag.arg("ident", __binding_1);
diag.arg("ident_name", __binding_2);
diag.arg("ctx", __binding_3);
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this is only allowed in slice patterns")));
diag.span_suggestions_with_style(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("if you don't need to use the contents of {$ident}, discard the tuple's remaining fields")),
__code_9, rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowAlways);
diag
}
}
}
}
};Diagnostic)]
325#[help("remove this and bind each tuple field independently")]
326#[diag("`{$ident_name} @` is not allowed in a {$ctx}")]
327pub(crate) struct SubTupleBinding<'a> {
328 #[primary_span]
329 #[label("this is only allowed in slice patterns")]
330 #[suggestion(
331 "if you don't need to use the contents of {$ident}, discard the tuple's remaining fields",
332 style = "verbose",
333 code = "..",
334 applicability = "maybe-incorrect"
335 )]
336 pub span: Span,
337 pub ident: Ident,
338 pub ident_name: Symbol,
339 pub ctx: &'a str,
340}
341
342#[derive(const _: () =
{
impl<'_sess, 'a, G> rustc_errors::Diagnostic<'_sess, G> for
ExtraDoubleDot<'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 {
ExtraDoubleDot {
span: __binding_0, prev_span: __binding_1, ctx: __binding_2
} => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`..` can only be used once per {$ctx} pattern")));
;
diag.arg("ctx", __binding_2);
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("can only be used once per {$ctx} pattern")));
diag.span_label(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("previously used here")));
diag
}
}
}
}
};Diagnostic)]
343#[diag("`..` can only be used once per {$ctx} pattern")]
344pub(crate) struct ExtraDoubleDot<'a> {
345 #[primary_span]
346 #[label("can only be used once per {$ctx} pattern")]
347 pub span: Span,
348 #[label("previously used here")]
349 pub prev_span: Span,
350 pub ctx: &'a str,
351}
352
353#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
MisplacedDoubleDot where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
MisplacedDoubleDot { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`..` patterns are not allowed here")));
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("only allowed in tuple, tuple struct, and slice patterns")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
354#[note("only allowed in tuple, tuple struct, and slice patterns")]
355#[diag("`..` patterns are not allowed here")]
356pub(crate) struct MisplacedDoubleDot {
357 #[primary_span]
358 pub span: Span,
359}
360
361#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
MatchArmWithNoBody where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
MatchArmWithNoBody {
span: __binding_0, suggestion: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`match` arm with no body")));
let __code_10 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!(" => todo!(),"))
})].into_iter();
;
diag.span(__binding_0);
diag.span_suggestions_with_style(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("add a body after the pattern")),
__code_10, rustc_errors::Applicability::HasPlaceholders,
rustc_errors::SuggestionStyle::ShowCode);
diag
}
}
}
}
};Diagnostic)]
362#[diag("`match` arm with no body")]
363pub(crate) struct MatchArmWithNoBody {
364 #[primary_span]
365 pub span: Span,
366 #[suggestion(
367 "add a body after the pattern",
368 code = " => todo!(),",
369 applicability = "has-placeholders"
370 )]
371 pub suggestion: Span,
372}
373
374#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
NeverPatternWithBody where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
NeverPatternWithBody { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("a never pattern is always unreachable")));
let __code_11 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!(""))
})].into_iter();
;
diag.span(__binding_0);
diag.span_label(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("this will never be executed")));
diag.span_suggestions_with_style(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this expression")),
__code_11, rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowCode);
diag
}
}
}
}
};Diagnostic)]
375#[diag("a never pattern is always unreachable")]
376pub(crate) struct NeverPatternWithBody {
377 #[primary_span]
378 #[label("this will never be executed")]
379 #[suggestion("remove this expression", code = "", applicability = "maybe-incorrect")]
380 pub span: Span,
381}
382
383#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
NeverPatternWithGuard where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
NeverPatternWithGuard { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("a guard on a never pattern will never be run")));
let __code_12 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!(""))
})].into_iter();
;
diag.span(__binding_0);
diag.span_suggestions_with_style(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove this guard")),
__code_12, rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowCode);
diag
}
}
}
}
};Diagnostic)]
384#[diag("a guard on a never pattern will never be run")]
385pub(crate) struct NeverPatternWithGuard {
386 #[primary_span]
387 #[suggestion("remove this guard", code = "", applicability = "maybe-incorrect")]
388 pub span: Span,
389}
390
391#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
ArbitraryExpressionInPattern where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
ArbitraryExpressionInPattern {
span: __binding_0,
pattern_from_macro_note: __binding_1,
const_block_in_pattern_help: __binding_2 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("arbitrary expressions aren't allowed in patterns")));
;
diag.span(__binding_0);
if __binding_1 {
diag.note(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("the `expr` fragment specifier forces the metavariable's content to be an expression")));
}
if __binding_2 {
diag.help(rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use a named `const`-item or an `if`-guard (`x if x == const {\"{ ... }\"}`) instead")));
}
diag
}
}
}
}
};Diagnostic)]
392#[diag("arbitrary expressions aren't allowed in patterns")]
393pub(crate) struct ArbitraryExpressionInPattern {
394 #[primary_span]
395 pub span: Span,
396 #[note("the `expr` fragment specifier forces the metavariable's content to be an expression")]
397 pub pattern_from_macro_note: bool,
398 #[help("use a named `const`-item or an `if`-guard (`x if x == const {\"{ ... }\"}`) instead")]
399 pub const_block_in_pattern_help: bool,
400}
401
402#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InclusiveRangeWithNoEnd where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InclusiveRangeWithNoEnd { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("inclusive range with no end")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
403#[diag("inclusive range with no end")]
404pub(crate) struct InclusiveRangeWithNoEnd {
405 #[primary_span]
406 pub span: Span,
407}
408
409#[derive(const _: () =
{
impl rustc_errors::Subdiagnostic for RTNSuggestion {
fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
where __G: rustc_errors::EmissionGuarantee {
match self {
RTNSuggestion { output: __binding_0, input: __binding_1 } =>
{
let mut suggestions = Vec::new();
let __code_13 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!(""))
});
let __code_14 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("(..)"))
});
suggestions.push((__binding_0, __code_13));
suggestions.push((__binding_1, __code_14));
let mut sub_args = rustc_errors::DiagArgMap::default();
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use the right argument notation and remove the return type")),
&sub_args);
diag.multipart_suggestion_with_style(__message, suggestions,
rustc_errors::Applicability::MachineApplicable,
rustc_errors::SuggestionStyle::ShowAlways);
}
}
}
}
};Subdiagnostic)]
410#[multipart_suggestion(
411 "use the right argument notation and remove the return type",
412 applicability = "machine-applicable",
413 style = "verbose"
414)]
415pub(crate) struct RTNSuggestion {
417 #[suggestion_part(code = "")]
418 pub output: Span,
419 #[suggestion_part(code = "(..)")]
420 pub input: Span,
421}
422
423#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
BadReturnTypeNotation where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
BadReturnTypeNotation::Inputs { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("argument types not allowed with return type notation")));
let __code_15 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!("(..)"))
})].into_iter();
;
diag.span(__binding_0);
diag.span_suggestions_with_style(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("remove the input types")),
__code_15, rustc_errors::Applicability::MachineApplicable,
rustc_errors::SuggestionStyle::ShowAlways);
diag
}
BadReturnTypeNotation::Output {
span: __binding_0, suggestion: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("return type not allowed with return type notation")));
;
diag.span(__binding_0);
diag.subdiagnostic(__binding_1);
diag
}
BadReturnTypeNotation::NeedsDots { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("return type notation arguments must be elided with `..`")));
let __code_16 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!("(..)"))
})].into_iter();
;
diag.span(__binding_0);
diag.span_suggestions_with_style(__binding_0,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use the correct syntax by adding `..` to the arguments")),
__code_16, rustc_errors::Applicability::MachineApplicable,
rustc_errors::SuggestionStyle::ShowAlways);
diag
}
BadReturnTypeNotation::Position { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("return type notation not allowed in this position yet")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
424pub(crate) enum BadReturnTypeNotation {
425 #[diag("argument types not allowed with return type notation")]
426 Inputs {
427 #[primary_span]
428 #[suggestion(
429 "remove the input types",
430 code = "(..)",
431 applicability = "machine-applicable",
432 style = "verbose"
433 )]
434 span: Span,
435 },
436 #[diag("return type not allowed with return type notation")]
437 Output {
438 #[primary_span]
439 span: Span,
440 #[subdiagnostic]
441 suggestion: RTNSuggestion,
442 },
443 #[diag("return type notation arguments must be elided with `..`")]
444 NeedsDots {
445 #[primary_span]
446 #[suggestion(
447 "use the correct syntax by adding `..` to the arguments",
448 code = "(..)",
449 applicability = "machine-applicable",
450 style = "verbose"
451 )]
452 span: Span,
453 },
454 #[diag("return type notation not allowed in this position yet")]
455 Position {
456 #[primary_span]
457 span: Span,
458 },
459}
460
461#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
GenericParamDefaultInBinder where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
GenericParamDefaultInBinder { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("defaults for generic parameters are not allowed in `for<...>` binders")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
462#[diag("defaults for generic parameters are not allowed in `for<...>` binders")]
463pub(crate) struct GenericParamDefaultInBinder {
464 #[primary_span]
465 pub span: Span,
466}
467
468#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AsyncBoundNotOnTrait where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AsyncBoundNotOnTrait { span: __binding_0, descr: __binding_1
} => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`async` bound modifier only allowed on trait, not `{$descr}`")));
;
diag.arg("descr", __binding_1);
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
469#[diag("`async` bound modifier only allowed on trait, not `{$descr}`")]
470pub(crate) struct AsyncBoundNotOnTrait {
471 #[primary_span]
472 pub span: Span,
473 pub descr: &'static str,
474}
475
476#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
AsyncBoundOnlyForFnTraits where G: rustc_errors::EmissionGuarantee
{
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
AsyncBoundOnlyForFnTraits { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`async` bound modifier only allowed on `Fn`/`FnMut`/`FnOnce` traits")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
477#[diag("`async` bound modifier only allowed on `Fn`/`FnMut`/`FnOnce` traits")]
478pub(crate) struct AsyncBoundOnlyForFnTraits {
479 #[primary_span]
480 pub span: Span,
481}
482
483#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
NoPreciseCapturesOnApit where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
NoPreciseCapturesOnApit { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`use<...>` precise capturing syntax not allowed in argument-position `impl Trait`")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
484#[diag("`use<...>` precise capturing syntax not allowed in argument-position `impl Trait`")]
485pub(crate) struct NoPreciseCapturesOnApit {
486 #[primary_span]
487 pub span: Span,
488}
489
490#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for YieldInClosure
where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
YieldInClosure { span: __binding_0, suggestion: __binding_1
} => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("`yield` can only be used in `#[coroutine]` closures, or `gen` blocks")));
let __code_17 =
[::alloc::__export::must_use({
::alloc::fmt::format(format_args!("#[coroutine] "))
})].into_iter();
;
diag.span(__binding_0);
if let Some(__binding_1) = __binding_1 {
diag.span_suggestions_with_style(__binding_1,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("use `#[coroutine]` to make this closure a coroutine")),
__code_17, rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowAlways);
}
diag
}
}
}
}
};Diagnostic)]
491#[diag("`yield` can only be used in `#[coroutine]` closures, or `gen` blocks")]
492pub(crate) struct YieldInClosure {
493 #[primary_span]
494 pub span: Span,
495 #[suggestion(
496 "use `#[coroutine]` to make this closure a coroutine",
497 code = "#[coroutine] ",
498 applicability = "maybe-incorrect",
499 style = "verbose"
500 )]
501 pub suggestion: Option<Span>,
502}
503
504#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
InvalidLegacyConstGenericArg where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
InvalidLegacyConstGenericArg {
span: __binding_0, suggestion: __binding_1 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items")));
;
diag.span(__binding_0);
diag.subdiagnostic(__binding_1);
diag
}
}
}
}
};Diagnostic)]
505#[diag(
506 "invalid argument to a legacy const generic: cannot have const blocks, closures, async blocks or items"
507)]
508pub(crate) struct InvalidLegacyConstGenericArg {
509 #[primary_span]
510 pub span: Span,
511 #[subdiagnostic]
512 pub suggestion: UseConstGenericArg,
513}
514
515#[derive(const _: () =
{
impl rustc_errors::Subdiagnostic for UseConstGenericArg {
fn add_to_diag<__G>(self, diag: &mut rustc_errors::Diag<'_, __G>)
where __G: rustc_errors::EmissionGuarantee {
match self {
UseConstGenericArg {
end_of_fn: __binding_0,
const_args: __binding_1,
other_args: __binding_2,
call_args: __binding_3 } => {
let mut suggestions = Vec::new();
let __code_18 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("::<{0}>", __binding_1))
});
let __code_19 =
::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}", __binding_2))
});
suggestions.push((__binding_0, __code_18));
suggestions.push((__binding_3, __code_19));
let mut sub_args = rustc_errors::DiagArgMap::default();
let __message =
rustc_errors::format_diag_message(&rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("try using a const generic argument instead")),
&sub_args);
diag.multipart_suggestion_with_style(__message, suggestions,
rustc_errors::Applicability::MaybeIncorrect,
rustc_errors::SuggestionStyle::ShowCode);
}
}
}
}
};Subdiagnostic)]
516#[multipart_suggestion(
517 "try using a const generic argument instead",
518 applicability = "maybe-incorrect"
519)]
520pub(crate) struct UseConstGenericArg {
521 #[suggestion_part(code = "::<{const_args}>")]
522 pub end_of_fn: Span,
523 pub const_args: String,
524 pub other_args: String,
525 #[suggestion_part(code = "{other_args}")]
526 pub call_args: Span,
527}
528
529#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
UnionWithDefault where G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
UnionWithDefault { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("unions cannot have default field values")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
530#[diag("unions cannot have default field values")]
531pub(crate) struct UnionWithDefault {
532 #[primary_span]
533 pub span: Span,
534}
535
536#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
UnresolvedDelegationCallee where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
UnresolvedDelegationCallee { span: __binding_0 } => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("failed to resolve delegation callee")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
537#[diag("failed to resolve delegation callee")]
538pub(crate) struct UnresolvedDelegationCallee {
539 #[primary_span]
540 pub span: Span,
541}
542
543#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
CycleInDelegationSignatureResolution where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
CycleInDelegationSignatureResolution { span: __binding_0 }
=> {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("encountered a cycle during delegation signature resolution")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
544#[diag("encountered a cycle during delegation signature resolution")]
545pub(crate) struct CycleInDelegationSignatureResolution {
546 #[primary_span]
547 pub span: Span,
548}
549
550#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
DelegationBlockSpecifiedWhenNoParams where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
DelegationBlockSpecifiedWhenNoParams { span: __binding_0 }
=> {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("delegation's target expression is specified for function with no params")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
551#[diag("delegation's target expression is specified for function with no params")]
552pub(crate) struct DelegationBlockSpecifiedWhenNoParams {
553 #[primary_span]
554 pub span: Span,
555}
556
557#[derive(const _: () =
{
impl<'_sess, G> rustc_errors::Diagnostic<'_sess, G> for
DelegationAttemptedBlockWithDefsDeletion where
G: rustc_errors::EmissionGuarantee {
#[track_caller]
fn into_diag(self, dcx: rustc_errors::DiagCtxtHandle<'_sess>,
level: rustc_errors::Level) -> rustc_errors::Diag<'_sess, G> {
match self {
DelegationAttemptedBlockWithDefsDeletion { span: __binding_0
} => {
let mut diag =
rustc_errors::Diag::new(dcx, level,
rustc_errors::DiagMessage::Inline(std::borrow::Cow::Borrowed("attempted to delete delegation's target expression that contains definitions inside")));
;
diag.span(__binding_0);
diag
}
}
}
}
};Diagnostic)]
558#[diag("attempted to delete delegation's target expression that contains definitions inside")]
559pub(crate) struct DelegationAttemptedBlockWithDefsDeletion {
560 #[primary_span]
561 pub span: Span,
562}