add tests for const NonNull::as_ref
This commit is contained in:
parent
3e07965244
commit
855b8b82a5
3 changed files with 30 additions and 0 deletions
8
tests/ui/consts/const-eval/nonnull_as_ref.rs
Normal file
8
tests/ui/consts/const-eval/nonnull_as_ref.rs
Normal file
|
|
@ -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() {}
|
||||
6
tests/ui/consts/const-eval/nonnull_as_ref_ub.rs
Normal file
6
tests/ui/consts/const-eval/nonnull_as_ref_ub.rs
Normal file
|
|
@ -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() {}
|
||||
16
tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr
Normal file
16
tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr
Normal file
|
|
@ -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`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue