Adjust some tests for invalid_reference_casting improvements
This commit is contained in:
parent
20a6b57106
commit
507d497cfa
5 changed files with 9 additions and 4 deletions
|
@ -1893,7 +1893,8 @@ impl<T: ?Sized + fmt::Display> fmt::Display for RefMut<'_, T> {
|
||||||
/// on an _exclusive_ `UnsafeCell<T>`. Even though `T` and `UnsafeCell<T>` have the
|
/// on an _exclusive_ `UnsafeCell<T>`. Even though `T` and `UnsafeCell<T>` have the
|
||||||
/// same memory layout, the following is not allowed and undefined behavior:
|
/// same memory layout, the following is not allowed and undefined behavior:
|
||||||
///
|
///
|
||||||
/// ```rust,no_run
|
#[cfg_attr(bootstrap, doc = "```rust,no_run")]
|
||||||
|
#[cfg_attr(not(bootstrap), doc = "```rust,compile_fail")]
|
||||||
/// # use std::cell::UnsafeCell;
|
/// # use std::cell::UnsafeCell;
|
||||||
/// unsafe fn not_allowed<T>(ptr: &UnsafeCell<T>) -> &mut T {
|
/// unsafe fn not_allowed<T>(ptr: &UnsafeCell<T>) -> &mut T {
|
||||||
/// let t = ptr as *const UnsafeCell<T> as *mut T;
|
/// let t = ptr as *const UnsafeCell<T> as *mut T;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
//@revisions: stack tree
|
//@revisions: stack tree
|
||||||
//@[tree]compile-flags: -Zmiri-tree-borrows
|
//@[tree]compile-flags: -Zmiri-tree-borrows
|
||||||
|
|
||||||
|
#![allow(invalid_reference_casting)]
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let target = Box::new(42); // has an implicit raw
|
let target = Box::new(42); // has an implicit raw
|
||||||
let xref = &*target;
|
let xref = &*target;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#![allow(invalid_reference_casting)]
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let target = 42;
|
let target = 42;
|
||||||
// Make sure raw ptr with raw tag cannot mutate frozen location without breaking the shared ref.
|
// Make sure raw ptr with raw tag cannot mutate frozen location without breaking the shared ref.
|
||||||
|
|
|
@ -9,7 +9,7 @@ impl <const B: &'static bool> T<B> {
|
||||||
unsafe {
|
unsafe {
|
||||||
*(B as *const bool as *mut bool) = false;
|
*(B as *const bool as *mut bool) = false;
|
||||||
//~^ ERROR evaluation of constant value failed [E0080]
|
//~^ ERROR evaluation of constant value failed [E0080]
|
||||||
//~| ERROR casting `&T` to `&mut T` is undefined behavior
|
//~| ERROR assigning to `&T` is undefined behavior
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
|
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
|
||||||
--> $DIR/issue-100313.rs:10:13
|
--> $DIR/issue-100313.rs:10:13
|
||||||
|
|
|
|
||||||
LL | *(B as *const bool as *mut bool) = false;
|
LL | *(B as *const bool as *mut bool) = false;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `#[deny(invalid_reference_casting)]` on by default
|
= note: `#[deny(invalid_reference_casting)]` on by default
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue