diff --git a/tests/compile-fail/transmute_fat.rs b/tests/compile-fail/transmute_fat.rs new file mode 100644 index 000000000000..6b9e6f876481 --- /dev/null +++ b/tests/compile-fail/transmute_fat.rs @@ -0,0 +1,13 @@ +#![feature(i128_type)] + +fn main() { + #[cfg(target_pointer_width="64")] + let bad = unsafe { + std::mem::transmute::<&[u8], u128>(&[1u8]) + }; + #[cfg(target_pointer_width="32")] + let bad = unsafe { + std::mem::transmute::<&[u8], u64>(&[1u8]) + }; + bad + 1; //~ ERROR a raw memory access tried to access part of a pointer value as raw bytes +} diff --git a/tests/compile-fail/transmute_fat2.rs b/tests/compile-fail/transmute_fat2.rs new file mode 100644 index 000000000000..028ed613eee7 --- /dev/null +++ b/tests/compile-fail/transmute_fat2.rs @@ -0,0 +1,13 @@ +#![feature(i128_type)] + +fn main() { + #[cfg(target_pointer_width="64")] + let bad = unsafe { + std::mem::transmute::(42) + }; + #[cfg(target_pointer_width="32")] + let bad = unsafe { + std::mem::transmute::(42) + }; + bad[0]; //~ ERROR index out of bounds: the len is 0 but the index is 0 +}