File tree 2 files changed +6
-3
lines changed
tests/ui/consts/miri_unleashed
2 files changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -54,6 +54,8 @@ const POINTS_TO_MUTABLE2: &i32 = unsafe { &*MUTABLE_REF };
54
54
//~^ ERROR: evaluation of constant value failed
55
55
//~| accesses static
56
56
57
+ const POINTS_TO_MUTABLE_INNER : * const i32 = & mut 42 as * mut _ as * const _ ;
58
+
57
59
fn main ( ) {
58
60
unsafe {
59
61
* MUH . x . get ( ) = 99 ;
Original file line number Diff line number Diff line change @@ -21,11 +21,12 @@ static REFMUT2: &mut i32 = {let mut x = 0; &mut {x}}; //~ERROR undefined behavio
21
21
// commented out.)
22
22
// static RAW: *const AtomicI32 = &AtomicI32::new(42);
23
23
24
- struct SyncPtr < T > ( * const T ) ;
24
+ struct SyncPtr < T > { x : * const T }
25
25
unsafe impl < T > Sync for SyncPtr < T > { }
26
26
27
27
// This one does not get promoted, and then the reference is simply too short-lived.
28
- static RAW_SYNC : SyncPtr < AtomicI32 > = SyncPtr ( & AtomicI32 :: new ( 42 ) ) ; //~ERROR dangling pointer
29
- static RAW_MUT : SyncPtr < i32 > = SyncPtr ( & mut 42 as * mut _ as * const _ ) ; //~ERROR dangling pointer
28
+ static RAW_SYNC : SyncPtr < AtomicI32 > = SyncPtr { x : & AtomicI32 :: new ( 42 ) } ;
29
+ static RAW_MUT_CAST : SyncPtr < i32 > = SyncPtr { x : & mut 42 as * mut _ as * const _ } ;
30
+ static RAW_MUT_COERCE : SyncPtr < i32 > = SyncPtr { x : & mut 0 } ;
30
31
31
32
fn main ( ) { }
You can’t perform that action at this time.
0 commit comments