blob: 6b979263c56caeb380b1e5cdb9e769907cff89ff [file] [log] [blame]
bendnc8c07422025-03-31 08:50:561//@ run-rustfix
2#![deny(unnecessary_transmutes)]
3#![allow(unused_unsafe, unused_imports, unused_variables, unused_parens)]
4use std::mem::transmute;
5
6pub fn bytes_at_home(x: u32) -> [u8; 4] {
7 unsafe { transmute(x) }
8 //~^ ERROR
9}
10
11fn main() {
12 unsafe {
13 let x: u16 = transmute(*b"01");
14 //~^ ERROR
15 let x: [u8; 2] = transmute(x);
16 //~^ ERROR
17 let x: u32 = transmute(*b"0123");
18 //~^ ERROR
19 let x: [u8; 4] = transmute(x);
20 //~^ ERROR
21 let x: u64 = transmute(*b"feriscat");
22 //~^ ERROR
23 let x: [u8; 8] = transmute(x);
24 //~^ ERROR
25
26 let y: i16 = transmute(*b"01");
27 //~^ ERROR
28 let y: [u8; 2] = transmute(y);
29 //~^ ERROR
30 let y: i32 = transmute(*b"0123");
31 //~^ ERROR
32 let y: [u8; 4] = transmute(y);
33 //~^ ERROR
34 let y: i64 = transmute(*b"feriscat");
35 //~^ ERROR
36 let y: [u8; 8] = transmute(y);
37 //~^ ERROR
38
39 let z: f32 = transmute(*b"0123");
40 //~^ ERROR
41 let z: [u8; 4] = transmute(z);
42 //~^ ERROR
43 let z: f64 = transmute(*b"feriscat");
44 //~^ ERROR
45 let z: [u8; 8] = transmute(z);
46 //~^ ERROR
47
48 let y: u32 = transmute('🦀');
49 //~^ ERROR
50 let y: char = transmute(y);
51 //~^ ERROR
52
53 let x: u16 = transmute(8i16);
54 //~^ ERROR
55 let x: i16 = transmute(x);
56 //~^ ERROR
57 let x: u32 = transmute(4i32);
58 //~^ ERROR
59 let x: i32 = transmute(x);
60 //~^ ERROR
61 let x: u64 = transmute(7i64);
62 //~^ ERROR
63 let x: i64 = transmute(x);
64 //~^ ERROR
65
66 let y: f32 = transmute(1u32);
67 //~^ ERROR
68 let y: u32 = transmute(y);
69 //~^ ERROR
70 let y: f64 = transmute(3u64);
71 //~^ ERROR
72 let y: u64 = transmute(2.0);
73 //~^ ERROR
74
75 let z: bool = transmute(1u8);
76 //~^ ERROR
77 let z: u8 = transmute(z);
78 //~^ ERROR
79
80 let z: bool = transmute(1i8);
81 // no error!
82 let z: i8 = transmute(z);
83 //~^ ERROR
84 }
85}