aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2025-08-26 17:31:32 +0400
committerPaolo Bonzini <pbonzini@redhat.com>2025-08-27 10:57:04 +0200
commit96f2c80fed20790fec0b35b774af676d5068077b (patch)
tree77548aaf9756dbb29e3ee08f4d3b0b3800f63542
parent9a6d6ae8afb18e18eacb94e105722c08e84fe9fd (diff)
downloadqemu-96f2c80fed20790fec0b35b774af676d5068077b.zip
qemu-96f2c80fed20790fec0b35b774af676d5068077b.tar.gz
qemu-96f2c80fed20790fec0b35b774af676d5068077b.tar.bz2
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>
-rw-r--r--rust/qemu-api-macros/src/lib.rs10
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 b525d89..a614741 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,