This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +30
-0
lines changed
tests/ui/consts/const-eval Expand file tree Collapse file tree 3 files changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ // check-pass
2+
3+ use std:: ptr:: NonNull ;
4+
5+ const NON_NULL : NonNull < u8 > = unsafe { NonNull :: new_unchecked ( ( & 42u8 as * const u8 ) . cast_mut ( ) ) } ;
6+ const _: ( ) = assert ! ( 42 == * unsafe { NON_NULL . as_ref( ) } ) ;
7+
8+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ use std:: ptr:: NonNull ;
2+
3+ const NON_NULL : NonNull < u8 > = unsafe { NonNull :: dangling ( ) } ;
4+ const _: ( ) = assert ! ( 42 == * unsafe { NON_NULL . as_ref( ) } ) ;
5+
6+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error[E0080]: evaluation of constant value failed
2+ --> $SRC_DIR/core/src/ptr/non_null.rs:LL:COL
3+ |
4+ = note: dereferencing pointer failed: 0x1[noalloc] is a dangling pointer (it has no provenance)
5+ |
6+ note: inside `NonNull::<u8>::as_ref::<'_>`
7+ --> $SRC_DIR/core/src/ptr/non_null.rs:LL:COL
8+ note: inside `_`
9+ --> $DIR/nonnull_as_ref_ub.rs:4:39
10+ |
11+ LL | const _: () = assert!(42 == *unsafe { NON_NULL.as_ref() });
12+ | ^^^^^^^^^^^^^^^^^
13+
14+ error: aborting due to previous error
15+
16+ For more information about this error, try `rustc --explain E0080`.
You can’t perform that action at this time.
0 commit comments