This includes: 1) the outcome of reviewing https://lore.kernel.org/qemu-devel/20241209123717.99077-1-pbonz...@redhat.com/T/, especially with respect to instance_finalize implementation and Rust-defined subclasses (patches 1-6)
2) the beginnings of separating instance_init/instance_post_init, making the latter take &self (patches 7-9) 3) extracting pl011's logic to convert an integer into an enum into a #[derive(TryInto)] procedural macro (patches 10-11) 4) a one-off change that I noticed while reading Cargo documentation (patch 12) Zhao: I have placed these in rust-next, but feel free to ignore them for your next HPET submission. I have also included in my tree your test additions for usage in CI, but I'm not including them here to give you the opportunity to post them with a commit message and a signed-off-by. If you don't have time, it's in safe hands. :) Paolo Paolo Bonzini (12): rust: qom: add ParentField rust: add a utility module for compile-time type checks rust: macros: check that the first field of a #[derive(Object)] struct is a ParentField rust: macros: check that #[derive(Object)] requires #[repr(C)] rust: qom: automatically use Drop trait to implement instance_finalize rust: qom: move device_id to PL011 class side rust: pl011: only leave embedded object initialization in instance_init rust: qom: make INSTANCE_POST_INIT take a shared reference rust: qdev: expose inherited methods to subclasses of SysBusDevice rust: qemu-api-macros: extend error reporting facility to parse errors rust: qemu-api-macros: add automatic TryFrom/TryInto derivation rust: hide warnings for subprojects rust/hw/char/pl011/src/device.rs | 79 +++++---- rust/hw/char/pl011/src/lib.rs | 28 +--- rust/qemu-api-macros/src/lib.rs | 150 +++++++++++++----- rust/qemu-api-macros/src/utils.rs | 26 +++ rust/qemu-api/meson.build | 1 + rust/qemu-api/src/assertions.rs | 90 +++++++++++ rust/qemu-api/src/irq.rs | 3 +- rust/qemu-api/src/lib.rs | 1 + rust/qemu-api/src/prelude.rs | 2 + rust/qemu-api/src/qom.rs | 77 +++++++-- rust/qemu-api/src/sysbus.rs | 23 ++- rust/qemu-api/tests/tests.rs | 4 +- subprojects/arbitrary-int-1-rs.wrap | 3 + subprojects/bilge-0.2-rs.wrap | 3 + subprojects/bilge-impl-0.2-rs.wrap | 3 + subprojects/either-1-rs.wrap | 3 + subprojects/itertools-0.11-rs.wrap | 3 + .../arbitrary-int-1-rs/meson.build | 1 + .../packagefiles/bilge-0.2-rs/meson.build | 1 + .../bilge-impl-0.2-rs/meson.build | 1 + .../packagefiles/either-1-rs/meson.build | 1 + .../itertools-0.11-rs/meson.build | 1 + .../proc-macro-error-1-rs/meson.build | 1 + .../proc-macro-error-attr-1-rs/meson.build | 1 + .../packagefiles/proc-macro2-1-rs/meson.build | 1 + .../packagefiles/quote-1-rs/meson.build | 1 + subprojects/packagefiles/syn-2-rs/meson.build | 1 + .../unicode-ident-1-rs/meson.build | 1 + subprojects/proc-macro-error-1-rs.wrap | 3 + subprojects/proc-macro-error-attr-1-rs.wrap | 3 + subprojects/proc-macro2-1-rs.wrap | 3 + subprojects/quote-1-rs.wrap | 3 + subprojects/syn-2-rs.wrap | 3 + subprojects/unicode-ident-1-rs.wrap | 3 + subprojects/unicode-ident-1-rs/meson.build | 20 --- 35 files changed, 402 insertions(+), 146 deletions(-) create mode 100644 rust/qemu-api-macros/src/utils.rs create mode 100644 rust/qemu-api/src/assertions.rs delete mode 100644 subprojects/unicode-ident-1-rs/meson.build -- 2.47.1