clean-up tests

This commit is contained in:
Ada Alakbarova 2025-09-10 13:50:11 +02:00
parent 49e2f37b26
commit 8938bb268d
No known key found for this signature in database
2 changed files with 108 additions and 110 deletions

View File

@ -1,10 +1,6 @@
//@needs-asm-support
//@aux-build:proc_macros.rs
#![allow(unused)]
#![allow(deref_nullptr)]
#![allow(clippy::unnecessary_operation)]
#![allow(dropping_copy_types)]
#![allow(clippy::assign_op_pattern)]
#![expect(clippy::unnecessary_operation, dropping_copy_types)]
#![warn(clippy::multiple_unsafe_ops_per_block)]
extern crate proc_macros;
@ -105,17 +101,17 @@ fn correct3() {
}
}
// tests from the issue (https://github.com/rust-lang/rust-clippy/issues/10064)
fn issue10064() {
unsafe fn read_char_bad(ptr: *const u8) -> char {
unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
//~^ multiple_unsafe_ops_per_block
}
unsafe fn read_char_bad(ptr: *const u8) -> char {
unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
//~^ multiple_unsafe_ops_per_block
}
// no lint
unsafe fn read_char_good(ptr: *const u8) -> char {
let int_value = unsafe { *ptr.cast::<u32>() };
unsafe { core::char::from_u32_unchecked(int_value) }
// no lint
unsafe fn read_char_good(ptr: *const u8) -> char {
let int_value = unsafe { *ptr.cast::<u32>() };
unsafe { core::char::from_u32_unchecked(int_value) }
}
}
// no lint
@ -126,39 +122,41 @@ fn issue10259() {
});
}
fn _fn_ptr(x: unsafe fn()) {
unsafe {
//~^ multiple_unsafe_ops_per_block
x();
x();
}
}
fn _assoc_const() {
trait X {
const X: unsafe fn();
}
fn _f<T: X>() {
fn issue10367() {
fn fn_ptr(x: unsafe fn()) {
unsafe {
//~^ multiple_unsafe_ops_per_block
T::X();
T::X();
x();
x();
}
}
fn assoc_const() {
trait X {
const X: unsafe fn();
}
fn _f<T: X>() {
unsafe {
//~^ multiple_unsafe_ops_per_block
T::X();
T::X();
}
}
}
fn field_fn_ptr(x: unsafe fn()) {
struct X(unsafe fn());
let x = X(x);
unsafe {
//~^ multiple_unsafe_ops_per_block
x.0();
x.0();
}
}
}
fn _field_fn_ptr(x: unsafe fn()) {
struct X(unsafe fn());
let x = X(x);
unsafe {
//~^ multiple_unsafe_ops_per_block
x.0();
x.0();
}
}
// await expands to an unsafe block with several operations, but this is fine.: #11312
async fn await_desugaring_silent() {
// await expands to an unsafe block with several operations, but this is fine.
async fn issue11312() {
async fn helper() {}
helper().await;

View File

@ -1,5 +1,5 @@
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:38:5
--> tests/ui/multiple_unsafe_ops_per_block.rs:34:5
|
LL | / unsafe {
LL | |
@ -9,12 +9,12 @@ LL | | }
| |_____^
|
note: modification of a mutable static occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:40:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:36:9
|
LL | STATIC += 1;
| ^^^^^^^^^^^
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:41:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:37:9
|
LL | not_very_safe();
| ^^^^^^^^^^^^^^^
@ -22,7 +22,7 @@ LL | not_very_safe();
= help: to override `-D warnings` add `#[allow(clippy::multiple_unsafe_ops_per_block)]`
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:48:5
--> tests/ui/multiple_unsafe_ops_per_block.rs:44:5
|
LL | / unsafe {
LL | |
@ -32,18 +32,18 @@ LL | | }
| |_____^
|
note: union field access occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:50:14
--> tests/ui/multiple_unsafe_ops_per_block.rs:46:14
|
LL | drop(u.u);
| ^^^
note: raw pointer dereference occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:51:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:47:9
|
LL | *raw_ptr();
| ^^^^^^^^^^
error: this `unsafe` block contains 3 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:56:5
--> tests/ui/multiple_unsafe_ops_per_block.rs:52:5
|
LL | / unsafe {
LL | |
@ -54,23 +54,23 @@ LL | | }
| |_____^
|
note: inline assembly used here
--> tests/ui/multiple_unsafe_ops_per_block.rs:58:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:54:9
|
LL | asm!("nop");
| ^^^^^^^^^^^
note: unsafe method call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:59:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:55:9
|
LL | sample.not_very_safe();
| ^^^^^^^^^^^^^^^^^^^^^^
note: modification of a mutable static occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:60:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:56:9
|
LL | STATIC = 0;
| ^^^^^^^^^^
error: this `unsafe` block contains 6 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:66:5
--> tests/ui/multiple_unsafe_ops_per_block.rs:62:5
|
LL | / unsafe {
LL | |
@ -82,115 +82,115 @@ LL | | }
| |_____^
|
note: union field access occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:68:14
--> tests/ui/multiple_unsafe_ops_per_block.rs:64:14
|
LL | drop(u.u);
| ^^^
note: access of a mutable static occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:69:14
--> tests/ui/multiple_unsafe_ops_per_block.rs:65:14
|
LL | drop(STATIC);
| ^^^^^^
note: unsafe method call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:70:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:66:9
|
LL | sample.not_very_safe();
| ^^^^^^^^^^^^^^^^^^^^^^
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:71:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:67:9
|
LL | not_very_safe();
| ^^^^^^^^^^^^^^^
note: raw pointer dereference occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:72:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:68:9
|
LL | *raw_ptr();
| ^^^^^^^^^^
note: inline assembly used here
--> tests/ui/multiple_unsafe_ops_per_block.rs:73:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:69:9
|
LL | asm!("nop");
| ^^^^^^^^^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:111:5
--> tests/ui/multiple_unsafe_ops_per_block.rs:106:9
|
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:111:14
--> tests/ui/multiple_unsafe_ops_per_block.rs:106:18
|
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: raw pointer dereference occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:111:39
--> tests/ui/multiple_unsafe_ops_per_block.rs:106:43
|
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^
LL | unsafe { char::from_u32_unchecked(*ptr.cast::<u32>()) }
| ^^^^^^^^^^^^^^^^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:130:5
|
LL | / unsafe {
LL | |
LL | | x();
LL | | x();
LL | | }
| |_____^
|
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:132:9
|
LL | x();
| ^^^
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:133:9
|
LL | x();
| ^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:142:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:127:9
|
LL | / unsafe {
LL | |
LL | | T::X();
LL | | T::X();
LL | | x();
LL | | x();
LL | | }
| |_________^
|
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:144:13
--> tests/ui/multiple_unsafe_ops_per_block.rs:129:13
|
LL | T::X();
| ^^^^^^
LL | x();
| ^^^
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:145:13
--> tests/ui/multiple_unsafe_ops_per_block.rs:130:13
|
LL | T::X();
| ^^^^^^
LL | x();
| ^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:153:5
--> tests/ui/multiple_unsafe_ops_per_block.rs:139:13
|
LL | / unsafe {
LL | / unsafe {
LL | |
LL | | x.0();
LL | | x.0();
LL | | }
| |_____^
LL | | T::X();
LL | | T::X();
LL | | }
| |_____________^
|
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:155:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:141:17
|
LL | x.0();
| ^^^^^
LL | T::X();
| ^^^^^^
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:156:9
--> tests/ui/multiple_unsafe_ops_per_block.rs:142:17
|
LL | x.0();
| ^^^^^
LL | T::X();
| ^^^^^^
error: this `unsafe` block contains 2 unsafe operations, expected only one
--> tests/ui/multiple_unsafe_ops_per_block.rs:150:9
|
LL | / unsafe {
LL | |
LL | | x.0();
LL | | x.0();
LL | | }
| |_________^
|
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:152:13
|
LL | x.0();
| ^^^^^
note: unsafe function call occurs here
--> tests/ui/multiple_unsafe_ops_per_block.rs:153:13
|
LL | x.0();
| ^^^^^
error: aborting due to 8 previous errors