diff options
| author | Folkert de Vries <folkert@folkertdev.nl> | 2025-01-29 11:57:37 +0100 | 
|---|---|---|
| committer | Folkert de Vries <folkert@folkertdev.nl> | 2025-01-29 12:15:12 +0100 | 
| commit | fbd30ea35fb79d73faa9d5b3feae391fed5336c8 (patch) | |
| tree | 43bf93169a47f84e8443e1937f915a47e1a63da7 /compiler/rustc_ast_lowering/src | |
| parent | cf577f34c47937ccb9983186eca5f8719da585f4 (diff) | |
| download | rust-fbd30ea35fb79d73faa9d5b3feae391fed5336c8.tar.gz rust-fbd30ea35fb79d73faa9d5b3feae391fed5336c8.zip | |
show supported register classes
in inline assembly, show the supported register classes when an invalid one is found
Diffstat (limited to 'compiler/rustc_ast_lowering/src')
| -rw-r--r-- | compiler/rustc_ast_lowering/src/asm.rs | 9 | ||||
| -rw-r--r-- | compiler/rustc_ast_lowering/src/errors.rs | 5 | 
2 files changed, 10 insertions, 4 deletions
| diff --git a/compiler/rustc_ast_lowering/src/asm.rs b/compiler/rustc_ast_lowering/src/asm.rs index 2f1f1269ece..96c230ec243 100644 --- a/compiler/rustc_ast_lowering/src/asm.rs +++ b/compiler/rustc_ast_lowering/src/asm.rs @@ -152,11 +152,16 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { InlineAsmRegOrRegClass::RegClass(reg_class) => { asm::InlineAsmRegOrRegClass::RegClass(if let Some(asm_arch) = asm_arch { asm::InlineAsmRegClass::parse(asm_arch, reg_class).unwrap_or_else( - |error| { + |supported_register_classes| { + let mut register_classes = + format!("`{}`", supported_register_classes[0]); + for m in &supported_register_classes[1..] { + let _ = write!(register_classes, ", `{m}`"); + } self.dcx().emit_err(InvalidRegisterClass { op_span: *op_sp, reg_class, - error, + supported_register_classes: register_classes, }); asm::InlineAsmRegClass::Err }, diff --git a/compiler/rustc_ast_lowering/src/errors.rs b/compiler/rustc_ast_lowering/src/errors.rs index f727691bf47..953057681ab 100644 --- a/compiler/rustc_ast_lowering/src/errors.rs +++ b/compiler/rustc_ast_lowering/src/errors.rs @@ -212,12 +212,13 @@ pub(crate) struct InvalidRegister<'a> { } #[derive(Diagnostic)] +#[note] #[diag(ast_lowering_invalid_register_class)] -pub(crate) struct InvalidRegisterClass<'a> { +pub(crate) struct InvalidRegisterClass { #[primary_span] pub op_span: Span, pub reg_class: Symbol, - pub error: &'a str, + pub supported_register_classes: String, } #[derive(Diagnostic)] | 
