Add more cases to the test
This commit is contained in:
parent
bb67915028
commit
3ce9d5c269
1 changed files with 28 additions and 2 deletions
|
|
@ -1,16 +1,38 @@
|
|||
#![feature(unsafe_block_in_unsafe_fn)]
|
||||
#![warn(unsafe_op_in_unsafe_fn)]
|
||||
#![deny(unused_unsafe)]
|
||||
#![deny(safe_packed_borrows)]
|
||||
|
||||
unsafe fn unsf() {}
|
||||
const PTR: *const () = std::ptr::null();
|
||||
static mut VOID: () = ();
|
||||
|
||||
#[repr(packed)]
|
||||
pub struct Packed {
|
||||
data: &'static u32,
|
||||
}
|
||||
|
||||
const PACKED: Packed = Packed { data: &0 };
|
||||
|
||||
unsafe fn foo() {
|
||||
unsf();
|
||||
//~^ WARNING call to unsafe function is unsafe and requires unsafe block
|
||||
*PTR;
|
||||
//~^ WARNING dereference of raw pointer is unsafe and requires unsafe block
|
||||
VOID = ();
|
||||
//~^ WARNING use of mutable static is unsafe and requires unsafe block
|
||||
&PACKED.data; // the level for the `safe_packed_borrows` lint is ignored
|
||||
//~^ WARNING borrow of packed field is unsafe and requires unsafe block
|
||||
}
|
||||
|
||||
unsafe fn bar() {
|
||||
unsafe { unsf() } // no error
|
||||
// no error
|
||||
unsafe {
|
||||
unsf();
|
||||
*PTR;
|
||||
VOID = ();
|
||||
&PACKED.data;
|
||||
}
|
||||
}
|
||||
|
||||
unsafe fn baz() {
|
||||
|
|
@ -20,7 +42,11 @@ unsafe fn baz() {
|
|||
|
||||
#[allow(unsafe_op_in_unsafe_fn)]
|
||||
unsafe fn qux() {
|
||||
unsf(); // no error
|
||||
// lint allowed -> no error
|
||||
unsf();
|
||||
*PTR;
|
||||
VOID = ();
|
||||
&PACKED.data;
|
||||
|
||||
unsafe { unsf() }
|
||||
//~^ ERROR unnecessary `unsafe` block
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue