Set unnecessary_cast suggestion to MaybeIncorrect for pointer casts

Removing casts may cause type inference to stop working which requires
manual intervention
This commit is contained in:
Alex Macleod 2023-07-13 13:29:41 +00:00
parent 26edd5a2ab
commit ea36a9df75
3 changed files with 39 additions and 1 deletions

View file

@ -56,7 +56,7 @@ pub(super) fn check<'tcx>(
&format!("casting raw pointers to the same type and constness is unnecessary (`{cast_from}` -> `{cast_to}`)"),
"try",
cast_str.clone(),
Applicability::MachineApplicable,
Applicability::MaybeIncorrect,
);
}
}

View file

@ -0,0 +1,22 @@
#![warn(clippy::unnecessary_cast)]
fn main() {
let _ = std::ptr::null() as *const u8;
}
mod issue11113 {
#[repr(C)]
struct Vtbl {
query: unsafe extern "system" fn(),
}
struct TearOff {
object: *mut std::ffi::c_void,
}
impl TearOff {
unsafe fn query(&self) {
((*(*(self.object as *mut *mut _) as *mut Vtbl)).query)()
}
}
}

View file

@ -0,0 +1,16 @@
error: casting raw pointers to the same type and constness is unnecessary (`*const u8` -> `*const u8`)
--> $DIR/unnecessary_cast_unfixable.rs:4:13
|
LL | let _ = std::ptr::null() as *const u8;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::ptr::null()`
|
= note: `-D clippy::unnecessary-cast` implied by `-D warnings`
error: casting raw pointers to the same type and constness is unnecessary (`*mut issue11113::Vtbl` -> `*mut issue11113::Vtbl`)
--> $DIR/unnecessary_cast_unfixable.rs:19:16
|
LL | ((*(*(self.object as *mut *mut _) as *mut Vtbl)).query)()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `*(self.object as *mut *mut _)`
error: aborting due to 2 previous errors