Skip to content

Commit

Permalink
Auto merge of rust-lang#11152 - Alexendoo:unnecessary-cast-applicabil…
Browse files Browse the repository at this point in the history
…ity, r=Manishearth

Set `unnecessary_cast` suggestion to `MaybeIncorrect` for pointer casts

Closes rust-lang#11113

changelog: none
  • Loading branch information
bors committed Jul 14, 2023
2 parents 4b355d8 + ea36a9d commit bafde54
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion clippy_lints/src/casts/unnecessary_cast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
);
}
}
Expand Down
22 changes: 22 additions & 0 deletions tests/ui/unnecessary_cast_unfixable.rs
Original file line number Diff line number Diff line change
@@ -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)()
}
}
}
16 changes: 16 additions & 0 deletions tests/ui/unnecessary_cast_unfixable.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit bafde54

Please sign in to comment.