blob: 15273165b5e1348f14cd6c2d81af054f192cfb6b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
// revisions: mirunsafeck thirunsafeck
// [thirunsafeck]compile-flags: -Z thir-unsafeck
#![feature(rustc_attrs)]
#![allow(unused,dead_code)]
fn nested_field() {
#[rustc_layout_scalar_valid_range_start(1)]
struct NonZero<T>(T);
let mut foo = unsafe { NonZero((1,)) };
foo.0.0 = 0;
//~^ ERROR: mutation of layout constrained field is unsafe
}
fn block() {
#[rustc_layout_scalar_valid_range_start(1)]
struct NonZero<T>(T);
let mut foo = unsafe { NonZero((1,)) };
{ foo.0 }.0 = 0;
// ^ not unsafe because the result of the block expression is a new place
}
fn main() {}
|