about summary refs log tree commit diff
path: root/tests/ui/consts/const-ptr-is-null.rs
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2024-09-08 18:59:30 +0200
committerRalf Jung <post@ralfj.de>2024-09-08 19:07:46 +0200
commit11d51aae863d46a73ad39ec607bd7592fdb836e3 (patch)
treec42390e46d97b7e37edb5e235af98075a19a7a33 /tests/ui/consts/const-ptr-is-null.rs
parent7b18b3eb6d45efe45ecbe0b6043a1a93cef4a166 (diff)
downloadrust-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.rs20
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() {}