diff options
Diffstat (limited to 'src/test/ui/cast/fat-ptr-cast-rpass.rs')
-rw-r--r-- | src/test/ui/cast/fat-ptr-cast-rpass.rs | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/src/test/ui/cast/fat-ptr-cast-rpass.rs b/src/test/ui/cast/fat-ptr-cast-rpass.rs deleted file mode 100644 index f5747eb8b..000000000 --- a/src/test/ui/cast/fat-ptr-cast-rpass.rs +++ /dev/null @@ -1,34 +0,0 @@ -// run-pass - -#![feature(ptr_metadata)] - -trait Foo { - fn foo(&self) {} -} - -struct Bar; - -impl Foo for Bar {} - -fn main() { - // Test we can turn a fat pointer to array back into a thin pointer. - let a: *const [i32] = &[1, 2, 3]; - let b = a as *const [i32; 2]; - unsafe { - assert_eq!(*b, [1, 2]); - } - - // Test conversion to an address (usize). - let a: *const [i32; 3] = &[1, 2, 3]; - let b: *const [i32] = a; - assert_eq!(a as usize, b as *const () as usize); - - // And conversion to a void pointer/address for trait objects too. - let a: *mut dyn Foo = &mut Bar; - let b = a as *mut () as usize; - let c = a as *const () as usize; - let d = a.to_raw_parts().0 as usize; - - assert_eq!(b, d); - assert_eq!(c, d); -} |