summaryrefslogtreecommitdiffstats
path: root/src/test/ui/consts/offset_from.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/consts/offset_from.rs')
-rw-r--r--src/test/ui/consts/offset_from.rs59
1 files changed, 0 insertions, 59 deletions
diff --git a/src/test/ui/consts/offset_from.rs b/src/test/ui/consts/offset_from.rs
deleted file mode 100644
index 465147041..000000000
--- a/src/test/ui/consts/offset_from.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-// run-pass
-
-#![feature(const_ptr_sub_ptr)]
-#![feature(ptr_sub_ptr)]
-
-struct Struct {
- field: (),
-}
-
-#[repr(C)]
-struct Struct2 {
- data: u8,
- field: u8,
-}
-
-pub const OFFSET: usize = {
- let uninit = std::mem::MaybeUninit::<Struct>::uninit();
- let base_ptr: *const Struct = &uninit as *const _ as *const Struct;
- // The following statement is UB (taking the address of an uninitialized field).
- // Const eval doesn't detect this right now, but it may stop compiling at some point
- // in the future.
- let field_ptr = unsafe { &(*base_ptr).field as *const () as *const u8 };
- let offset = unsafe { field_ptr.offset_from(base_ptr as *const u8) };
- offset as usize
-};
-
-pub const OFFSET_2: usize = {
- let uninit = std::mem::MaybeUninit::<Struct2>::uninit();
- let base_ptr: *const Struct2 = &uninit as *const _ as *const Struct2;
- let field_ptr = unsafe { &(*base_ptr).field as *const u8 };
- let offset = unsafe { field_ptr.offset_from(base_ptr as *const u8) };
- offset as usize
-};
-
-pub const OVERFLOW: isize = {
- let uninit = std::mem::MaybeUninit::<Struct2>::uninit();
- let base_ptr: *const Struct2 = &uninit as *const _ as *const Struct2;
- let field_ptr = unsafe { &(*base_ptr).field as *const u8 };
- unsafe { (base_ptr as *const u8).offset_from(field_ptr) }
-};
-
-pub const OFFSET_EQUAL_INTS: isize = {
- let ptr = 1 as *const u8;
- unsafe { ptr.offset_from(ptr) }
-};
-
-pub const OFFSET_UNSIGNED: usize = {
- let a = ['a', 'b', 'c'];
- let ptr = a.as_ptr();
- unsafe { ptr.add(2).sub_ptr(ptr) }
-};
-
-fn main() {
- assert_eq!(OFFSET, 0);
- assert_eq!(OFFSET_2, 1);
- assert_eq!(OVERFLOW, -1);
- assert_eq!(OFFSET_EQUAL_INTS, 0);
- assert_eq!(OFFSET_UNSIGNED, 2);
-}