mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +00:00
clean-up tests
This commit is contained in:
parent
49e2f37b26
commit
8938bb268d
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user