]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/transmute_ptr_to_ref.rs
Rollup merge of #70733 - yoshuawuyts:arc-increment-refcount, r=Mark-Simulacrum
[rust.git] / src / tools / clippy / tests / ui / transmute_ptr_to_ref.rs
1 #![warn(clippy::transmute_ptr_to_ref)]
2
3 unsafe fn _ptr_to_ref<T, U>(p: *const T, m: *mut T, o: *const U, om: *mut U) {
4     let _: &T = std::mem::transmute(p);
5     let _: &T = &*p;
6
7     let _: &mut T = std::mem::transmute(m);
8     let _: &mut T = &mut *m;
9
10     let _: &T = std::mem::transmute(m);
11     let _: &T = &*m;
12
13     let _: &mut T = std::mem::transmute(p as *mut T);
14     let _ = &mut *(p as *mut T);
15
16     let _: &T = std::mem::transmute(o);
17     let _: &T = &*(o as *const T);
18
19     let _: &mut T = std::mem::transmute(om);
20     let _: &mut T = &mut *(om as *mut T);
21
22     let _: &T = std::mem::transmute(om);
23     let _: &T = &*(om as *const T);
24 }
25
26 fn issue1231() {
27     struct Foo<'a, T> {
28         bar: &'a T,
29     }
30
31     let raw = 42 as *const i32;
32     let _: &Foo<u8> = unsafe { std::mem::transmute::<_, &Foo<_>>(raw) };
33
34     let _: &Foo<&u8> = unsafe { std::mem::transmute::<_, &Foo<&_>>(raw) };
35
36     type Bar<'a> = &'a u8;
37     let raw = 42 as *const i32;
38     unsafe { std::mem::transmute::<_, Bar>(raw) };
39 }
40
41 fn main() {}