]> git.proxmox.com Git - rustc.git/blame - src/test/ui/unsafe/ranged_ints3_const.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / src / test / ui / unsafe / ranged_ints3_const.rs
CommitLineData
136023e0
XL
1// revisions: mirunsafeck thirunsafeck
2// [thirunsafeck]compile-flags: -Z thir-unsafeck
3
0731742a
XL
4#![feature(rustc_attrs)]
5
6use std::cell::Cell;
7
8#[rustc_layout_scalar_valid_range_start(1)]
9#[repr(transparent)]
10pub(crate) struct NonZero<T>(pub(crate) T);
11fn main() {}
12
13const 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
20const 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}