diff options
| author | Ralf Jung <post@ralfj.de> | 2024-09-08 18:59:30 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-09-08 19:07:46 +0200 |
| commit | 11d51aae863d46a73ad39ec607bd7592fdb836e3 (patch) | |
| tree | c42390e46d97b7e37edb5e235af98075a19a7a33 /tests/ui/consts/const-ptr-is-null.rs | |
| parent | 7b18b3eb6d45efe45ecbe0b6043a1a93cef4a166 (diff) | |
| download | rust-11d51aae863d46a73ad39ec607bd7592fdb836e3.tar.gz rust-11d51aae863d46a73ad39ec607bd7592fdb836e3.zip | |
const: make ptr.is_null() stop execution on ambiguity
Diffstat (limited to 'tests/ui/consts/const-ptr-is-null.rs')
| -rw-r--r-- | tests/ui/consts/const-ptr-is-null.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/ui/consts/const-ptr-is-null.rs b/tests/ui/consts/const-ptr-is-null.rs new file mode 100644 index 00000000000..82c293c0ad6 --- /dev/null +++ b/tests/ui/consts/const-ptr-is-null.rs @@ -0,0 +1,20 @@ +#![feature(const_ptr_is_null)] +use std::ptr; + +const IS_NULL: () = { + assert!(ptr::null::<u8>().is_null()); +}; +const IS_NOT_NULL: () = { + assert!(!ptr::null::<u8>().wrapping_add(1).is_null()); +}; + +const MAYBE_NULL: () = { + let x = 15; + let ptr = &x as *const i32; + // This one is still unambiguous... + assert!(!ptr.is_null()); + // but once we shift outside the allocation, we might become null. + assert!(!ptr.wrapping_sub(512).is_null()); //~inside `MAYBE_NULL` +}; + +fn main() {} |
