diff options
| author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2025-08-26 17:31:32 +0400 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2025-08-27 10:57:04 +0200 |
| commit | 96f2c80fed20790fec0b35b774af676d5068077b (patch) | |
| tree | 77548aaf9756dbb29e3ee08f4d3b0b3800f63542 /rust/qemu-api-macros/src/lib.rs | |
| parent | 9a6d6ae8afb18e18eacb94e105722c08e84fe9fd (diff) | |
| download | focaccia-qemu-96f2c80fed20790fec0b35b774af676d5068077b.tar.gz focaccia-qemu-96f2c80fed20790fec0b35b774af676d5068077b.zip | |
rust/qemu-api-macros: make derive(Object) friendly when missing parent
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Link: https://lore.kernel.org/r/20250826133132.4064478-5-marcandre.lureau@redhat.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/qemu-api-macros/src/lib.rs')
| -rw-r--r-- | rust/qemu-api-macros/src/lib.rs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib.rs index b525d89c09..a614741889 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -85,7 +85,15 @@ fn derive_object_or_error(input: DeriveInput) -> Result<proc_macro2::TokenStream is_c_repr(&input, "#[derive(Object)]")?; let name = &input.ident; - let parent = &get_fields(&input, "#[derive(Object)]")?[0].ident; + let parent = &get_fields(&input, "#[derive(Object)]")? + .get(0) + .ok_or_else(|| { + Error::new( + input.ident.span(), + "#[derive(Object)] requires a parent field", + ) + })? + .ident; Ok(quote! { ::qemu_api::assert_field_type!(#name, #parent, |