]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_ast_lowering/src/errors.rs
New upstream version 1.67.1+dfsg1
[rustc.git] / compiler / rustc_ast_lowering / src / errors.rs
CommitLineData
2b03887a
FG
1use rustc_errors::DiagnosticArgFromDisplay;
2use rustc_macros::{Diagnostic, Subdiagnostic};
f2b60f7d
FG
3use rustc_span::{symbol::Ident, Span, Symbol};
4
2b03887a
FG
5#[derive(Diagnostic, Clone, Copy)]
6#[diag(ast_lowering_generic_type_with_parentheses, code = "E0214")]
f2b60f7d
FG
7pub struct GenericTypeWithParentheses {
8 #[primary_span]
9 #[label]
10 pub span: Span,
11 #[subdiagnostic]
12 pub sub: Option<UseAngleBrackets>,
13}
14
2b03887a
FG
15#[derive(Clone, Copy, Subdiagnostic)]
16#[multipart_suggestion(ast_lowering_use_angle_brackets, applicability = "maybe-incorrect")]
f2b60f7d 17pub struct UseAngleBrackets {
2b03887a 18 #[suggestion_part(code = "<")]
f2b60f7d 19 pub open_param: Span,
2b03887a 20 #[suggestion_part(code = ">")]
f2b60f7d
FG
21 pub close_param: Span,
22}
23
2b03887a
FG
24#[derive(Diagnostic)]
25#[diag(ast_lowering_invalid_abi, code = "E0703")]
26#[note]
f2b60f7d
FG
27pub struct InvalidAbi {
28 #[primary_span]
29 #[label]
30 pub span: Span,
31 pub abi: Symbol,
2b03887a
FG
32 pub command: String,
33 #[subdiagnostic]
34 pub suggestion: Option<InvalidAbiSuggestion>,
35}
36
37#[derive(Subdiagnostic)]
38#[suggestion(
39 ast_lowering_invalid_abi_suggestion,
40 code = "{suggestion}",
41 applicability = "maybe-incorrect"
42)]
43pub struct InvalidAbiSuggestion {
44 #[primary_span]
45 pub span: Span,
46 pub suggestion: String,
f2b60f7d
FG
47}
48
2b03887a
FG
49#[derive(Diagnostic, Clone, Copy)]
50#[diag(ast_lowering_assoc_ty_parentheses)]
f2b60f7d
FG
51pub struct AssocTyParentheses {
52 #[primary_span]
53 pub span: Span,
54 #[subdiagnostic]
55 pub sub: AssocTyParenthesesSub,
56}
57
2b03887a 58#[derive(Clone, Copy, Subdiagnostic)]
f2b60f7d 59pub enum AssocTyParenthesesSub {
2b03887a
FG
60 #[multipart_suggestion(ast_lowering_remove_parentheses)]
61 Empty {
62 #[suggestion_part(code = "")]
63 parentheses_span: Span,
64 },
65 #[multipart_suggestion(ast_lowering_use_angle_brackets)]
66 NotEmpty {
67 #[suggestion_part(code = "<")]
68 open_param: Span,
69 #[suggestion_part(code = ">")]
70 close_param: Span,
71 },
72}
73
74#[derive(Diagnostic)]
75#[diag(ast_lowering_misplaced_impl_trait, code = "E0562")]
f2b60f7d
FG
76pub struct MisplacedImplTrait<'a> {
77 #[primary_span]
78 pub span: Span,
79 pub position: DiagnosticArgFromDisplay<'a>,
80}
81
2b03887a
FG
82#[derive(Diagnostic, Clone, Copy)]
83#[diag(ast_lowering_rustc_box_attribute_error)]
f2b60f7d
FG
84pub struct RustcBoxAttributeError {
85 #[primary_span]
86 pub span: Span,
87}
88
2b03887a
FG
89#[derive(Diagnostic, Clone, Copy)]
90#[diag(ast_lowering_underscore_expr_lhs_assign)]
f2b60f7d
FG
91pub struct UnderscoreExprLhsAssign {
92 #[primary_span]
93 #[label]
94 pub span: Span,
95}
96
2b03887a
FG
97#[derive(Diagnostic, Clone, Copy)]
98#[diag(ast_lowering_base_expression_double_dot)]
f2b60f7d
FG
99pub struct BaseExpressionDoubleDot {
100 #[primary_span]
101 #[label]
102 pub span: Span,
103}
104
2b03887a
FG
105#[derive(Diagnostic, Clone, Copy)]
106#[diag(ast_lowering_await_only_in_async_fn_and_blocks, code = "E0728")]
f2b60f7d
FG
107pub struct AwaitOnlyInAsyncFnAndBlocks {
108 #[primary_span]
109 #[label]
110 pub dot_await_span: Span,
2b03887a 111 #[label(ast_lowering_this_not_async)]
f2b60f7d
FG
112 pub item_span: Option<Span>,
113}
114
2b03887a
FG
115#[derive(Diagnostic, Clone, Copy)]
116#[diag(ast_lowering_generator_too_many_parameters, code = "E0628")]
f2b60f7d
FG
117pub struct GeneratorTooManyParameters {
118 #[primary_span]
119 pub fn_decl_span: Span,
120}
121
2b03887a
FG
122#[derive(Diagnostic, Clone, Copy)]
123#[diag(ast_lowering_closure_cannot_be_static, code = "E0697")]
f2b60f7d
FG
124pub struct ClosureCannotBeStatic {
125 #[primary_span]
126 pub fn_decl_span: Span,
127}
128
2b03887a 129#[derive(Diagnostic, Clone, Copy)]
f2b60f7d 130#[help]
2b03887a 131#[diag(ast_lowering_async_non_move_closure_not_supported, code = "E0708")]
f2b60f7d
FG
132pub struct AsyncNonMoveClosureNotSupported {
133 #[primary_span]
134 pub fn_decl_span: Span,
135}
136
2b03887a
FG
137#[derive(Diagnostic, Clone, Copy)]
138#[diag(ast_lowering_functional_record_update_destructuring_assignment)]
f2b60f7d
FG
139pub struct FunctionalRecordUpdateDestructuringAssignemnt {
140 #[primary_span]
141 #[suggestion(code = "", applicability = "machine-applicable")]
142 pub span: Span,
143}
144
2b03887a
FG
145#[derive(Diagnostic, Clone, Copy)]
146#[diag(ast_lowering_async_generators_not_supported, code = "E0727")]
f2b60f7d
FG
147pub struct AsyncGeneratorsNotSupported {
148 #[primary_span]
149 pub span: Span,
150}
151
2b03887a
FG
152#[derive(Diagnostic, Clone, Copy)]
153#[diag(ast_lowering_inline_asm_unsupported_target, code = "E0472")]
f2b60f7d
FG
154pub struct InlineAsmUnsupportedTarget {
155 #[primary_span]
156 pub span: Span,
157}
158
2b03887a
FG
159#[derive(Diagnostic, Clone, Copy)]
160#[diag(ast_lowering_att_syntax_only_x86)]
f2b60f7d
FG
161pub struct AttSyntaxOnlyX86 {
162 #[primary_span]
163 pub span: Span,
164}
165
2b03887a
FG
166#[derive(Diagnostic, Clone, Copy)]
167#[diag(ast_lowering_abi_specified_multiple_times)]
f2b60f7d
FG
168pub struct AbiSpecifiedMultipleTimes {
169 #[primary_span]
170 pub abi_span: Span,
171 pub prev_name: Symbol,
172 #[label]
173 pub prev_span: Span,
174 #[note]
175 pub equivalent: Option<()>,
176}
177
2b03887a
FG
178#[derive(Diagnostic, Clone, Copy)]
179#[diag(ast_lowering_clobber_abi_not_supported)]
f2b60f7d
FG
180pub struct ClobberAbiNotSupported {
181 #[primary_span]
182 pub abi_span: Span,
183}
184
2b03887a 185#[derive(Diagnostic)]
f2b60f7d 186#[note]
2b03887a 187#[diag(ast_lowering_invalid_abi_clobber_abi)]
f2b60f7d
FG
188pub struct InvalidAbiClobberAbi {
189 #[primary_span]
190 pub abi_span: Span,
191 pub supported_abis: String,
192}
193
2b03887a
FG
194#[derive(Diagnostic, Clone, Copy)]
195#[diag(ast_lowering_invalid_register)]
f2b60f7d
FG
196pub struct InvalidRegister<'a> {
197 #[primary_span]
198 pub op_span: Span,
199 pub reg: Symbol,
200 pub error: &'a str,
201}
202
2b03887a
FG
203#[derive(Diagnostic, Clone, Copy)]
204#[diag(ast_lowering_invalid_register_class)]
f2b60f7d
FG
205pub struct InvalidRegisterClass<'a> {
206 #[primary_span]
207 pub op_span: Span,
208 pub reg_class: Symbol,
209 pub error: &'a str,
210}
211
2b03887a
FG
212#[derive(Diagnostic)]
213#[diag(ast_lowering_invalid_asm_template_modifier_reg_class)]
f2b60f7d
FG
214pub struct InvalidAsmTemplateModifierRegClass {
215 #[primary_span]
2b03887a 216 #[label(ast_lowering_template_modifier)]
f2b60f7d 217 pub placeholder_span: Span,
2b03887a 218 #[label(ast_lowering_argument)]
f2b60f7d
FG
219 pub op_span: Span,
220 #[subdiagnostic]
221 pub sub: InvalidAsmTemplateModifierRegClassSub,
222}
223
2b03887a 224#[derive(Subdiagnostic)]
f2b60f7d 225pub enum InvalidAsmTemplateModifierRegClassSub {
2b03887a 226 #[note(ast_lowering_support_modifiers)]
f2b60f7d 227 SupportModifier { class_name: Symbol, modifiers: String },
2b03887a 228 #[note(ast_lowering_does_not_support_modifiers)]
f2b60f7d
FG
229 DoesNotSupportModifier { class_name: Symbol },
230}
231
2b03887a
FG
232#[derive(Diagnostic, Clone, Copy)]
233#[diag(ast_lowering_invalid_asm_template_modifier_const)]
f2b60f7d
FG
234pub struct InvalidAsmTemplateModifierConst {
235 #[primary_span]
2b03887a 236 #[label(ast_lowering_template_modifier)]
f2b60f7d 237 pub placeholder_span: Span,
2b03887a 238 #[label(ast_lowering_argument)]
f2b60f7d
FG
239 pub op_span: Span,
240}
241
2b03887a
FG
242#[derive(Diagnostic, Clone, Copy)]
243#[diag(ast_lowering_invalid_asm_template_modifier_sym)]
f2b60f7d
FG
244pub struct InvalidAsmTemplateModifierSym {
245 #[primary_span]
2b03887a 246 #[label(ast_lowering_template_modifier)]
f2b60f7d 247 pub placeholder_span: Span,
2b03887a 248 #[label(ast_lowering_argument)]
f2b60f7d
FG
249 pub op_span: Span,
250}
251
2b03887a
FG
252#[derive(Diagnostic, Clone, Copy)]
253#[diag(ast_lowering_register_class_only_clobber)]
f2b60f7d
FG
254pub struct RegisterClassOnlyClobber {
255 #[primary_span]
256 pub op_span: Span,
257 pub reg_class_name: Symbol,
258}
259
2b03887a
FG
260#[derive(Diagnostic, Clone, Copy)]
261#[diag(ast_lowering_register_conflict)]
f2b60f7d
FG
262pub struct RegisterConflict<'a> {
263 #[primary_span]
2b03887a 264 #[label(ast_lowering_register1)]
f2b60f7d 265 pub op_span1: Span,
2b03887a 266 #[label(ast_lowering_register2)]
f2b60f7d
FG
267 pub op_span2: Span,
268 pub reg1_name: &'a str,
269 pub reg2_name: &'a str,
270 #[help]
271 pub in_out: Option<Span>,
272}
273
2b03887a 274#[derive(Diagnostic, Clone, Copy)]
f2b60f7d 275#[help]
2b03887a 276#[diag(ast_lowering_sub_tuple_binding)]
f2b60f7d
FG
277pub struct SubTupleBinding<'a> {
278 #[primary_span]
279 #[label]
487cf647 280 #[suggestion(
2b03887a 281 ast_lowering_sub_tuple_binding_suggestion,
487cf647 282 style = "verbose",
f2b60f7d
FG
283 code = "..",
284 applicability = "maybe-incorrect"
285 )]
286 pub span: Span,
287 pub ident: Ident,
288 pub ident_name: Symbol,
289 pub ctx: &'a str,
290}
291
2b03887a
FG
292#[derive(Diagnostic, Clone, Copy)]
293#[diag(ast_lowering_extra_double_dot)]
f2b60f7d
FG
294pub struct ExtraDoubleDot<'a> {
295 #[primary_span]
296 #[label]
297 pub span: Span,
2b03887a 298 #[label(ast_lowering_previously_used_here)]
f2b60f7d
FG
299 pub prev_span: Span,
300 pub ctx: &'a str,
301}
302
2b03887a 303#[derive(Diagnostic, Clone, Copy)]
f2b60f7d 304#[note]
2b03887a 305#[diag(ast_lowering_misplaced_double_dot)]
f2b60f7d
FG
306pub struct MisplacedDoubleDot {
307 #[primary_span]
308 pub span: Span,
309}
310
2b03887a
FG
311#[derive(Diagnostic, Clone, Copy)]
312#[diag(ast_lowering_misplaced_relax_trait_bound)]
f2b60f7d
FG
313pub struct MisplacedRelaxTraitBound {
314 #[primary_span]
315 pub span: Span,
316}
317
2b03887a
FG
318#[derive(Diagnostic, Clone, Copy)]
319#[diag(ast_lowering_not_supported_for_lifetime_binder_async_closure)]
f2b60f7d
FG
320pub struct NotSupportedForLifetimeBinderAsyncClosure {
321 #[primary_span]
322 pub span: Span,
323}
324
2b03887a
FG
325#[derive(Diagnostic, Clone, Copy)]
326#[diag(ast_lowering_arbitrary_expression_in_pattern)]
f2b60f7d
FG
327pub struct ArbitraryExpressionInPattern {
328 #[primary_span]
329 pub span: Span,
330}
331
2b03887a
FG
332#[derive(Diagnostic, Clone, Copy)]
333#[diag(ast_lowering_inclusive_range_with_no_end)]
f2b60f7d
FG
334pub struct InclusiveRangeWithNoEnd {
335 #[primary_span]
336 pub span: Span,
337}
338
2b03887a
FG
339#[derive(Diagnostic, Clone, Copy)]
340#[diag(ast_lowering_trait_fn_async, code = "E0706")]
f2b60f7d 341#[note]
2b03887a 342#[note(note2)]
f2b60f7d
FG
343pub struct TraitFnAsync {
344 #[primary_span]
345 pub fn_span: Span,
346 #[label]
347 pub span: Span,
348}