]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
rust/qemu-api-macros: make derive(Object) friendly when missing parent
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Tue, 26 Aug 2025 13:31:32 +0000 (17:31 +0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 27 Aug 2025 08:57:04 +0000 (10:57 +0200)
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>
rust/qemu-api-macros/src/lib.rs

index b525d89c09e496a1f7f5582dc6d994e318f62bca..a6147418891a6d59fe99b9da7ef1979d3636ae31 100644 (file)
@@ -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,