From 768a4c66a2331d6a85490570f5a64fef151cd72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Vi=C3=B6l?= Date: Tue, 22 Apr 2025 11:08:09 +0200 Subject: [PATCH 1/3] Mute clippy transmute warnings * `clippy::transmute_ptr_to_ref` for QGadget * `clippy::useless_transmute` for QObject --- qmetaobject_impl/src/qobject_impl.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/qmetaobject_impl/src/qobject_impl.rs b/qmetaobject_impl/src/qobject_impl.rs index 1a8d0d13..014148d8 100644 --- a/qmetaobject_impl/src/qobject_impl.rs +++ b/qmetaobject_impl/src/qobject_impl.rs @@ -686,7 +686,7 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> } else { quote! { #[allow(unused_variables)] - let mut obj = ::std::mem::transmute::<*mut ::std::os::raw::c_void, &mut #name #ty_generics>(o); + let mut obj = &*o; } }; @@ -875,7 +875,12 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> .map(|arg| { let n = &arg.name; let ty = &arg.typ; - quote! { unsafe { ::std::mem::transmute::<& #ty, *mut ::std::os::raw::c_void>(& #n) } } + quote! { + { + let mut n = #n; + (&mut n as *mut #ty as *mut ::std::os::raw::c_void) + } + } }) .collect(); let array_size = signal.args.len() + 1; From fdf587caef7ccf53ad5f6ac007274e0449486088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Vi=C3=B6l?= Date: Tue, 22 Apr 2025 15:21:01 +0200 Subject: [PATCH 2/3] fixup! Mute clippy transmute warnings --- qmetaobject_impl/src/qobject_impl.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/qmetaobject_impl/src/qobject_impl.rs b/qmetaobject_impl/src/qobject_impl.rs index 014148d8..00ae91d8 100644 --- a/qmetaobject_impl/src/qobject_impl.rs +++ b/qmetaobject_impl/src/qobject_impl.rs @@ -686,7 +686,10 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> } else { quote! { #[allow(unused_variables)] - let mut obj = &*o; + let mut obj: &mut #name #ty_generics = &mut *(::std::mem::transmute::< + *mut ::std::os::raw::c_void, + *mut #name #ty_generics, + >(o)); } }; @@ -866,7 +869,7 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> // FIXME! we should probably use the signature verbatim let n = &arg.name; let ty = &arg.typ; - quote! { #n : #ty } + quote! { mut #n : #ty } }) .collect(); let args_ptr: Vec<_> = signal @@ -876,10 +879,7 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> let n = &arg.name; let ty = &arg.typ; quote! { - { - let mut n = #n; - (&mut n as *mut #ty as *mut ::std::os::raw::c_void) - } + (&mut #n as *mut #ty as *mut ::std::os::raw::c_void) } }) .collect(); From 4622085296b20e2fb27bf081d64c9216a1502c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Vi=C3=B6l?= Date: Wed, 23 Apr 2025 09:13:03 +0200 Subject: [PATCH 3/3] Revert and use #[allow(clippy::...)] --- qmetaobject_impl/src/qobject_impl.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/qmetaobject_impl/src/qobject_impl.rs b/qmetaobject_impl/src/qobject_impl.rs index 00ae91d8..8f319f29 100644 --- a/qmetaobject_impl/src/qobject_impl.rs +++ b/qmetaobject_impl/src/qobject_impl.rs @@ -686,10 +686,8 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> } else { quote! { #[allow(unused_variables)] - let mut obj: &mut #name #ty_generics = &mut *(::std::mem::transmute::< - *mut ::std::os::raw::c_void, - *mut #name #ty_generics, - >(o)); + #[allow(clippy::transmute_ptr_to_ref)] + let mut obj = ::std::mem::transmute::<*mut ::std::os::raw::c_void, &mut #name #ty_generics>(o); } }; @@ -869,7 +867,7 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> // FIXME! we should probably use the signature verbatim let n = &arg.name; let ty = &arg.typ; - quote! { mut #n : #ty } + quote! { #n : #ty } }) .collect(); let args_ptr: Vec<_> = signal @@ -878,14 +876,13 @@ pub fn generate(input: TokenStream, is_qobject: bool, qt_version: QtVersion) -> .map(|arg| { let n = &arg.name; let ty = &arg.typ; - quote! { - (&mut #n as *mut #ty as *mut ::std::os::raw::c_void) - } + quote! { unsafe { ::std::mem::transmute::<& #ty, *mut ::std::os::raw::c_void>(& #n) } } }) .collect(); let array_size = signal.args.len() + 1; quote! { #[allow(non_snake_case)] + #[allow(clippy::useless_transmute)] fn #sig_name(&self #(, #args_decl)*) { let a: [*mut ::std::os::raw::c_void; #array_size] = [ ::std::ptr::null_mut() #(, #args_ptr)* ]; unsafe {