diff options
| author | Lukas Markeffsky <@> | 2022-09-23 17:52:53 +0200 |
|---|---|---|
| committer | Lukas Markeffsky <@> | 2023-05-23 12:52:35 +0000 |
| commit | 855b8b82a5859a5bd50a59757b2ddacf779784e0 (patch) | |
| tree | 78bdb29883201cf22e2d30210e6acceebdb1bfb0 | |
| parent | 3e07965244623ea709b842381f475178cf49879a (diff) | |
| download | rust-855b8b82a5859a5bd50a59757b2ddacf779784e0.tar.gz rust-855b8b82a5859a5bd50a59757b2ddacf779784e0.zip | |
add tests for const `NonNull::as_ref`
| -rw-r--r-- | tests/ui/consts/const-eval/nonnull_as_ref.rs | 8 | ||||
| -rw-r--r-- | tests/ui/consts/const-eval/nonnull_as_ref_ub.rs | 6 | ||||
| -rw-r--r-- | tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr | 16 |
3 files changed, 30 insertions, 0 deletions
diff --git a/tests/ui/consts/const-eval/nonnull_as_ref.rs b/tests/ui/consts/const-eval/nonnull_as_ref.rs new file mode 100644 index 00000000000..eb4683e2c30 --- /dev/null +++ b/tests/ui/consts/const-eval/nonnull_as_ref.rs @@ -0,0 +1,8 @@ +// check-pass + +use std::ptr::NonNull; + +const NON_NULL: NonNull<u8> = unsafe { NonNull::new_unchecked((&42u8 as *const u8).cast_mut()) }; +const _: () = assert!(42 == *unsafe { NON_NULL.as_ref() }); + +fn main() {} diff --git a/tests/ui/consts/const-eval/nonnull_as_ref_ub.rs b/tests/ui/consts/const-eval/nonnull_as_ref_ub.rs new file mode 100644 index 00000000000..3b48e972923 --- /dev/null +++ b/tests/ui/consts/const-eval/nonnull_as_ref_ub.rs @@ -0,0 +1,6 @@ +use std::ptr::NonNull; + +const NON_NULL: NonNull<u8> = unsafe { NonNull::dangling() }; +const _: () = assert!(42 == *unsafe { NON_NULL.as_ref() }); + +fn main() {} diff --git a/tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr b/tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr new file mode 100644 index 00000000000..de93cb0c3ca --- /dev/null +++ b/tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr @@ -0,0 +1,16 @@ +error[E0080]: evaluation of constant value failed + --> $SRC_DIR/core/src/ptr/non_null.rs:LL:COL + | + = note: dereferencing pointer failed: 0x1[noalloc] is a dangling pointer (it has no provenance) + | +note: inside `NonNull::<u8>::as_ref::<'_>` + --> $SRC_DIR/core/src/ptr/non_null.rs:LL:COL +note: inside `_` + --> $DIR/nonnull_as_ref_ub.rs:4:39 + | +LL | const _: () = assert!(42 == *unsafe { NON_NULL.as_ref() }); + | ^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0080`. |
