]>
Commit | Line | Data |
---|---|---|
136023e0 XL |
1 | // revisions: mirunsafeck thirunsafeck |
2 | // [thirunsafeck]compile-flags: -Z thir-unsafeck | |
3 | ||
0731742a XL |
4 | #![feature(rustc_attrs)] |
5 | ||
6 | use std::cell::Cell; | |
7 | ||
8 | #[rustc_layout_scalar_valid_range_start(1)] | |
9 | #[repr(transparent)] | |
10 | pub(crate) struct NonZero<T>(pub(crate) T); | |
11 | fn main() {} | |
12 | ||
13 | const fn foo() -> NonZero<Cell<u32>> { | |
14 | let mut x = unsafe { NonZero(Cell::new(1)) }; | |
5869c6ff | 15 | let y = &x.0; //~ ERROR the borrowed element may contain interior mutability |
0731742a XL |
16 | //~^ ERROR borrow of layout constrained field with interior mutability |
17 | unsafe { NonZero(Cell::new(1)) } | |
18 | } | |
19 | ||
20 | const fn bar() -> NonZero<Cell<u32>> { | |
21 | let mut x = unsafe { NonZero(Cell::new(1)) }; | |
5869c6ff | 22 | let y = unsafe { &x.0 }; //~ ERROR the borrowed element may contain interior mutability |
0731742a XL |
23 | unsafe { NonZero(Cell::new(1)) } |
24 | } |