diff options
| author | Michael Goulet <michael@errs.io> | 2023-08-27 21:04:34 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-08-30 15:01:58 -0700 |
| commit | 0100a94231344987bc93998d5975e656bfd7767d (patch) | |
| tree | 5fd77277b1918ed078d24645b2e3364f07b86ddd /tests/ui/unsafe | |
| parent | 59a8294849358a878a72358aa6d5fe5b9d312867 (diff) | |
| download | rust-0100a94231344987bc93998d5975e656bfd7767d.tar.gz rust-0100a94231344987bc93998d5975e656bfd7767d.zip | |
rustc_layout_scalar_valid_range makes ctors unsafe
Diffstat (limited to 'tests/ui/unsafe')
| -rw-r--r-- | tests/ui/unsafe/initializing-ranged-via-ctor.rs | 11 | ||||
| -rw-r--r-- | tests/ui/unsafe/initializing-ranged-via-ctor.stderr | 16 |
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/ui/unsafe/initializing-ranged-via-ctor.rs b/tests/ui/unsafe/initializing-ranged-via-ctor.rs new file mode 100644 index 00000000000..ca44fa7e4e7 --- /dev/null +++ b/tests/ui/unsafe/initializing-ranged-via-ctor.rs @@ -0,0 +1,11 @@ +#![feature(rustc_attrs)] +#![allow(internal_features)] + +#[derive(Debug)] +#[rustc_layout_scalar_valid_range_start(2)] +struct NonZeroAndOneU8(u8); + +fn main() { + println!("{:?}", Some(1).map(NonZeroAndOneU8).unwrap()); + //~^ ERROR found `unsafe fn(u8) -> NonZeroAndOneU8 {NonZeroAndOneU8}` +} diff --git a/tests/ui/unsafe/initializing-ranged-via-ctor.stderr b/tests/ui/unsafe/initializing-ranged-via-ctor.stderr new file mode 100644 index 00000000000..d34554c6641 --- /dev/null +++ b/tests/ui/unsafe/initializing-ranged-via-ctor.stderr @@ -0,0 +1,16 @@ +error[E0277]: expected a `FnOnce<({integer},)>` closure, found `unsafe fn(u8) -> NonZeroAndOneU8 {NonZeroAndOneU8}` + --> $DIR/initializing-ranged-via-ctor.rs:9:34 + | +LL | println!("{:?}", Some(1).map(NonZeroAndOneU8).unwrap()); + | --- ^^^^^^^^^^^^^^^ call the function in a closure: `|| unsafe { /* code */ }` + | | + | required by a bound introduced by this call + | + = help: the trait `FnOnce<({integer},)>` is not implemented for fn item `unsafe fn(u8) -> NonZeroAndOneU8 {NonZeroAndOneU8}` + = note: unsafe function cannot be called generically without an unsafe block +note: required by a bound in `Option::<T>::map` + --> $SRC_DIR/core/src/option.rs:LL:COL + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. |
