diff --git a/tests/ui/transmute.rs b/tests/ui/transmute.rs index 6f0a831f5..b70b846d3 100644 --- a/tests/ui/transmute.rs +++ b/tests/ui/transmute.rs @@ -21,67 +21,36 @@ fn my_vec() -> MyVec { unsafe fn _generic<'a, T, U: 'a>(t: &'a T) { let _: &'a T = core::intrinsics::transmute(t); - let _: &'a U = core::intrinsics::transmute(t); let _: *const T = core::intrinsics::transmute(t); - - - let _: *mut T = core::intrinsics::transmute(t); - - - let _: *const U = core::intrinsics::transmute(t); - - - } #[deny(transmute_ptr_to_ref)] unsafe fn _ptr_to_ref(p: *const T, m: *mut T, o: *const U, om: *mut U) { let _: &T = std::mem::transmute(p); - - - let _: &T = &*p; let _: &mut T = std::mem::transmute(m); - - - let _: &mut T = &mut *m; let _: &T = std::mem::transmute(m); - - - let _: &T = &*m; let _: &mut T = std::mem::transmute(p as *mut T); - - - let _ = &mut *(p as *mut T); let _: &T = std::mem::transmute(o); - - - let _: &T = &*(o as *const T); let _: &mut T = std::mem::transmute(om); - - - let _: &mut T = &mut *(om as *mut T); let _: &T = std::mem::transmute(om); - - - let _: &T = &*(om as *const T); } @@ -94,20 +63,11 @@ fn issue1231() { let raw = 42 as *const i32; let _: &Foo = unsafe { std::mem::transmute::<_, &Foo<_>>(raw) }; - - - let _: &Foo<&u8> = unsafe { std::mem::transmute::<_, &Foo<&_>>(raw) }; - - - type Bar<'a> = &'a u8; let raw = 42 as *const i32; unsafe { std::mem::transmute::<_, Bar>(raw) }; - - - } #[deny(useless_transmute)] @@ -115,19 +75,14 @@ fn useless() { unsafe { let _: Vec = core::intrinsics::transmute(my_vec()); - let _: Vec = core::mem::transmute(my_vec()); - let _: Vec = std::intrinsics::transmute(my_vec()); - let _: Vec = std::mem::transmute(my_vec()); - let _: Vec = my_transmute(my_vec()); - let _: Vec = core::intrinsics::transmute(my_vec()); let _: Vec = core::mem::transmute(my_vec()); let _: Vec = std::intrinsics::transmute(my_vec()); @@ -136,14 +91,10 @@ fn useless() { let _: *const usize = std::mem::transmute(5_isize); - - let _ = 5_isize as *const usize; let _: *const usize = std::mem::transmute(1+1usize); - - let _ = (1+1_usize) as *const usize; } } @@ -159,15 +110,11 @@ fn crosspointer() { unsafe { let _: Usize = core::intrinsics::transmute(int_const_ptr); - let _: Usize = core::intrinsics::transmute(int_mut_ptr); - let _: *const Usize = core::intrinsics::transmute(my_int()); - let _: *mut Usize = core::intrinsics::transmute(my_int()); - } } diff --git a/tests/ui/transmute.stderr b/tests/ui/transmute.stderr index 49a35e48b..b2bce16ab 100644 --- a/tests/ui/transmute.stderr +++ b/tests/ui/transmute.stderr @@ -11,171 +11,171 @@ note: lint level defined here | ^^^^^^^^^^^^^^^^^ error: transmute from a reference to a pointer - --> $DIR/transmute.rs:27:23 + --> $DIR/transmute.rs:26:23 | -27 | let _: *const T = core::intrinsics::transmute(t); +26 | let _: *const T = core::intrinsics::transmute(t); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `t as *const T` error: transmute from a reference to a pointer - --> $DIR/transmute.rs:32:21 + --> $DIR/transmute.rs:28:21 | -32 | let _: *mut T = core::intrinsics::transmute(t); +28 | let _: *mut T = core::intrinsics::transmute(t); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `t as *const T as *mut T` error: transmute from a reference to a pointer - --> $DIR/transmute.rs:37:23 + --> $DIR/transmute.rs:30:23 | -37 | let _: *const U = core::intrinsics::transmute(t); +30 | let _: *const U = core::intrinsics::transmute(t); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `t as *const T as *const U` error: transmute from a pointer type (`*const T`) to a reference type (`&T`) - --> $DIR/transmute.rs:45:17 + --> $DIR/transmute.rs:35:17 | -45 | let _: &T = std::mem::transmute(p); +35 | let _: &T = std::mem::transmute(p); | ^^^^^^^^^^^^^^^^^^^^^^ help: try `&*p` | note: lint level defined here - --> $DIR/transmute.rs:43:8 + --> $DIR/transmute.rs:33:8 | -43 | #[deny(transmute_ptr_to_ref)] +33 | #[deny(transmute_ptr_to_ref)] | ^^^^^^^^^^^^^^^^^^^^ error: transmute from a pointer type (`*mut T`) to a reference type (`&mut T`) - --> $DIR/transmute.rs:51:21 + --> $DIR/transmute.rs:38:21 | -51 | let _: &mut T = std::mem::transmute(m); +38 | let _: &mut T = std::mem::transmute(m); | ^^^^^^^^^^^^^^^^^^^^^^ help: try `&mut *m` error: transmute from a pointer type (`*mut T`) to a reference type (`&T`) - --> $DIR/transmute.rs:57:17 + --> $DIR/transmute.rs:41:17 | -57 | let _: &T = std::mem::transmute(m); +41 | let _: &T = std::mem::transmute(m); | ^^^^^^^^^^^^^^^^^^^^^^ help: try `&*m` error: transmute from a pointer type (`*mut T`) to a reference type (`&mut T`) - --> $DIR/transmute.rs:63:21 + --> $DIR/transmute.rs:44:21 | -63 | let _: &mut T = std::mem::transmute(p as *mut T); +44 | let _: &mut T = std::mem::transmute(p as *mut T); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `&mut *(p as *mut T)` error: transmute from a pointer type (`*const U`) to a reference type (`&T`) - --> $DIR/transmute.rs:69:17 + --> $DIR/transmute.rs:47:17 | -69 | let _: &T = std::mem::transmute(o); +47 | let _: &T = std::mem::transmute(o); | ^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(o as *const T)` error: transmute from a pointer type (`*mut U`) to a reference type (`&mut T`) - --> $DIR/transmute.rs:75:21 + --> $DIR/transmute.rs:50:21 | -75 | let _: &mut T = std::mem::transmute(om); +50 | let _: &mut T = std::mem::transmute(om); | ^^^^^^^^^^^^^^^^^^^^^^^ help: try `&mut *(om as *mut T)` error: transmute from a pointer type (`*mut U`) to a reference type (`&T`) - --> $DIR/transmute.rs:81:17 + --> $DIR/transmute.rs:53:17 | -81 | let _: &T = std::mem::transmute(om); +53 | let _: &T = std::mem::transmute(om); | ^^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(om as *const T)` error: transmute from a pointer type (`*const i32`) to a reference type (`&issue1231::Foo<'_, u8>`) - --> $DIR/transmute.rs:95:32 + --> $DIR/transmute.rs:64:32 | -95 | let _: &Foo = unsafe { std::mem::transmute::<_, &Foo<_>>(raw) }; +64 | let _: &Foo = unsafe { std::mem::transmute::<_, &Foo<_>>(raw) }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(raw as *const Foo<_>)` | note: lint level defined here - --> $DIR/transmute.rs:88:8 + --> $DIR/transmute.rs:57:8 | -88 | #[deny(transmute_ptr_to_ref)] +57 | #[deny(transmute_ptr_to_ref)] | ^^^^^^^^^^^^^^^^^^^^ error: transmute from a pointer type (`*const i32`) to a reference type (`&issue1231::Foo<'_, &u8>`) - --> $DIR/transmute.rs:100:33 - | -100 | let _: &Foo<&u8> = unsafe { std::mem::transmute::<_, &Foo<&_>>(raw) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(raw as *const Foo<&_>)` + --> $DIR/transmute.rs:66:33 + | +66 | let _: &Foo<&u8> = unsafe { std::mem::transmute::<_, &Foo<&_>>(raw) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(raw as *const Foo<&_>)` error: transmute from a pointer type (`*const i32`) to a reference type (`&u8`) - --> $DIR/transmute.rs:107:14 - | -107 | unsafe { std::mem::transmute::<_, Bar>(raw) }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(raw as *const u8)` + --> $DIR/transmute.rs:70:14 + | +70 | unsafe { std::mem::transmute::<_, Bar>(raw) }; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `&*(raw as *const u8)` error: transmute from a type (`std::vec::Vec`) to itself - --> $DIR/transmute.rs:116:27 - | -116 | let _: Vec = core::intrinsics::transmute(my_vec()); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | + --> $DIR/transmute.rs:76:27 + | +76 | let _: Vec = core::intrinsics::transmute(my_vec()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | note: lint level defined here - --> $DIR/transmute.rs:113:8 - | -113 | #[deny(useless_transmute)] - | ^^^^^^^^^^^^^^^^^ + --> $DIR/transmute.rs:73:8 + | +73 | #[deny(useless_transmute)] + | ^^^^^^^^^^^^^^^^^ error: transmute from a type (`std::vec::Vec`) to itself - --> $DIR/transmute.rs:119:27 - | -119 | let _: Vec = core::mem::transmute(my_vec()); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + --> $DIR/transmute.rs:78:27 + | +78 | let _: Vec = core::mem::transmute(my_vec()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: transmute from a type (`std::vec::Vec`) to itself - --> $DIR/transmute.rs:122:27 - | -122 | let _: Vec = std::intrinsics::transmute(my_vec()); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + --> $DIR/transmute.rs:80:27 + | +80 | let _: Vec = std::intrinsics::transmute(my_vec()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: transmute from a type (`std::vec::Vec`) to itself - --> $DIR/transmute.rs:125:27 - | -125 | let _: Vec = std::mem::transmute(my_vec()); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + --> $DIR/transmute.rs:82:27 + | +82 | let _: Vec = std::mem::transmute(my_vec()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: transmute from a type (`std::vec::Vec`) to itself - --> $DIR/transmute.rs:128:27 - | -128 | let _: Vec = my_transmute(my_vec()); - | ^^^^^^^^^^^^^^^^^^^^^^ + --> $DIR/transmute.rs:84:27 + | +84 | let _: Vec = my_transmute(my_vec()); + | ^^^^^^^^^^^^^^^^^^^^^^ error: transmute from an integer to a pointer - --> $DIR/transmute.rs:137:31 - | -137 | let _: *const usize = std::mem::transmute(5_isize); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `5_isize as *const usize` + --> $DIR/transmute.rs:92:31 + | +92 | let _: *const usize = std::mem::transmute(5_isize); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `5_isize as *const usize` error: transmute from an integer to a pointer - --> $DIR/transmute.rs:143:31 - | -143 | let _: *const usize = std::mem::transmute(1+1usize); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `(1+1usize) as *const usize` + --> $DIR/transmute.rs:96:31 + | +96 | let _: *const usize = std::mem::transmute(1+1usize); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try `(1+1usize) as *const usize` error: transmute from a type (`*const Usize`) to the type that it points to (`Usize`) - --> $DIR/transmute.rs:160:24 + --> $DIR/transmute.rs:111:24 | -160 | let _: Usize = core::intrinsics::transmute(int_const_ptr); +111 | let _: Usize = core::intrinsics::transmute(int_const_ptr); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: lint level defined here - --> $DIR/transmute.rs:153:8 + --> $DIR/transmute.rs:104:8 | -153 | #[deny(crosspointer_transmute)] +104 | #[deny(crosspointer_transmute)] | ^^^^^^^^^^^^^^^^^^^^^^ error: transmute from a type (`*mut Usize`) to the type that it points to (`Usize`) - --> $DIR/transmute.rs:163:24 + --> $DIR/transmute.rs:113:24 | -163 | let _: Usize = core::intrinsics::transmute(int_mut_ptr); +113 | let _: Usize = core::intrinsics::transmute(int_mut_ptr); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: transmute from a type (`Usize`) to a pointer to that type (`*const Usize`) - --> $DIR/transmute.rs:166:31 + --> $DIR/transmute.rs:115:31 | -166 | let _: *const Usize = core::intrinsics::transmute(my_int()); +115 | let _: *const Usize = core::intrinsics::transmute(my_int()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: transmute from a type (`Usize`) to a pointer to that type (`*mut Usize`) - --> $DIR/transmute.rs:169:29 + --> $DIR/transmute.rs:117:29 | -169 | let _: *mut Usize = core::intrinsics::transmute(my_int()); +117 | let _: *mut Usize = core::intrinsics::transmute(my_int()); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: aborting due to 25 previous errors diff --git a/tests/ui/transmute_32bit.rs b/tests/ui/transmute_32bit.rs index 9c63a6fe0..f391b728e 100644 --- a/tests/ui/transmute_32bit.rs +++ b/tests/ui/transmute_32bit.rs @@ -7,14 +7,10 @@ fn main() { unsafe { let _: *const usize = std::mem::transmute(6.0f32); - let _: *mut usize = std::mem::transmute(6.0f32); - let _: *const usize = std::mem::transmute('x'); - let _: *mut usize = std::mem::transmute('x'); - } } diff --git a/tests/ui/transmute_64bit.rs b/tests/ui/transmute_64bit.rs index bf7066245..4caa9d1f3 100644 --- a/tests/ui/transmute_64bit.rs +++ b/tests/ui/transmute_64bit.rs @@ -8,8 +8,6 @@ fn main() { unsafe { let _: *const usize = std::mem::transmute(6.0f64); - let _: *mut usize = std::mem::transmute(6.0f64); - } } diff --git a/tests/ui/transmute_64bit.stderr b/tests/ui/transmute_64bit.stderr index 1559809eb..3d06348b1 100644 --- a/tests/ui/transmute_64bit.stderr +++ b/tests/ui/transmute_64bit.stderr @@ -11,9 +11,9 @@ note: lint level defined here | ^^^^^^^^^^^^^^^ error: transmute from a `f64` to a pointer - --> $DIR/transmute_64bit.rs:12:29 + --> $DIR/transmute_64bit.rs:11:29 | -12 | let _: *mut usize = std::mem::transmute(6.0f64); +11 | let _: *mut usize = std::mem::transmute(6.0f64); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: aborting due to 2 previous errors