Skip to content

Commit

Permalink
add tests for const NonNull::as_ref
Browse files Browse the repository at this point in the history
  • Loading branch information
Lukas Markeffsky committed May 23, 2023
1 parent 3e07965 commit 855b8b8
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
8 changes: 8 additions & 0 deletions tests/ui/consts/const-eval/nonnull_as_ref.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 6 additions & 0 deletions tests/ui/consts/const-eval/nonnull_as_ref_ub.rs
Original file line number Diff line number Diff line change
@@ -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 changes: 16 additions & 0 deletions tests/ui/consts/const-eval/nonnull_as_ref_ub.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 855b8b8

Please sign in to comment.