File tree 3 files changed +30
-0
lines changed
tests/ui/consts/const-eval
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