]> git.proxmox.com Git - rustc.git/blame - src/test/ui/mir/mir_misc_casts.rs
Update unsuspicious file list
[rustc.git] / src / test / ui / mir / mir_misc_casts.rs
CommitLineData
b7449926 1// run-pass
9cc50fc6
SL
2fn func(){}
3
4const STR: &'static str = "hello";
5const BSTR: &'static [u8; 5] = b"hello";
6
9cc50fc6
SL
7fn from_ptr()
8-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, *const ()) {
abe05a73 9 let f = 1_usize as *const String;
9cc50fc6
SL
10 let c1 = f as isize;
11 let c2 = f as usize;
12 let c3 = f as i8;
13 let c4 = f as i16;
14 let c5 = f as i32;
15 let c6 = f as i64;
16 let c7 = f as u8;
17 let c8 = f as u16;
18 let c9 = f as u32;
19 let c10 = f as u64;
20 let c11 = f as *const ();
21 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)
22}
23
9cc50fc6 24fn from_1()
abe05a73 25-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
26 let c1 = 1 as isize;
27 let c2 = 1 as usize;
28 let c3 = 1 as i8;
29 let c4 = 1 as i16;
30 let c5 = 1 as i32;
31 let c6 = 1 as i64;
32 let c7 = 1 as u8;
33 let c8 = 1 as u16;
34 let c9 = 1 as u32;
35 let c10 = 1 as u64;
36 let c11 = 1 as f32;
37 let c12 = 1 as f64;
abe05a73 38 let c13 = 1 as *const String;
9cc50fc6
SL
39 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
40}
41
9cc50fc6 42fn from_1usize()
abe05a73 43-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
44 let c1 = 1_usize as isize;
45 let c2 = 1_usize as usize;
46 let c3 = 1_usize as i8;
47 let c4 = 1_usize as i16;
48 let c5 = 1_usize as i32;
49 let c6 = 1_usize as i64;
50 let c7 = 1_usize as u8;
51 let c8 = 1_usize as u16;
52 let c9 = 1_usize as u32;
53 let c10 = 1_usize as u64;
54 let c11 = 1_usize as f32;
55 let c12 = 1_usize as f64;
abe05a73 56 let c13 = 1_usize as *const String;
9cc50fc6
SL
57 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
58}
59
9cc50fc6 60fn from_1isize()
abe05a73 61-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
62 let c1 = 1_isize as isize;
63 let c2 = 1_isize as usize;
64 let c3 = 1_isize as i8;
65 let c4 = 1_isize as i16;
66 let c5 = 1_isize as i32;
67 let c6 = 1_isize as i64;
68 let c7 = 1_isize as u8;
69 let c8 = 1_isize as u16;
70 let c9 = 1_isize as u32;
71 let c10 = 1_isize as u64;
72 let c11 = 1_isize as f32;
73 let c12 = 1_isize as f64;
abe05a73 74 let c13 = 1_isize as *const String;
9cc50fc6
SL
75 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
76}
77
9cc50fc6 78fn from_1u8()
abe05a73 79-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
80 let c1 = 1_u8 as isize;
81 let c2 = 1_u8 as usize;
82 let c3 = 1_u8 as i8;
83 let c4 = 1_u8 as i16;
84 let c5 = 1_u8 as i32;
85 let c6 = 1_u8 as i64;
86 let c7 = 1_u8 as u8;
87 let c8 = 1_u8 as u16;
88 let c9 = 1_u8 as u32;
89 let c10 = 1_u8 as u64;
90 let c11 = 1_u8 as f32;
91 let c12 = 1_u8 as f64;
abe05a73 92 let c13 = 1_u8 as *const String;
9cc50fc6
SL
93 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
94}
95
9cc50fc6 96fn from_1i8()
abe05a73 97-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
98 let c1 = 1_i8 as isize;
99 let c2 = 1_i8 as usize;
100 let c3 = 1_i8 as i8;
101 let c4 = 1_i8 as i16;
102 let c5 = 1_i8 as i32;
103 let c6 = 1_i8 as i64;
104 let c7 = 1_i8 as u8;
105 let c8 = 1_i8 as u16;
106 let c9 = 1_i8 as u32;
107 let c10 = 1_i8 as u64;
108 let c11 = 1_i8 as f32;
109 let c12 = 1_i8 as f64;
abe05a73 110 let c13 = 1_i8 as *const String;
9cc50fc6
SL
111 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
112}
113
9cc50fc6 114fn from_1u16()
abe05a73 115-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
116 let c1 = 1_u16 as isize;
117 let c2 = 1_u16 as usize;
118 let c3 = 1_u16 as i8;
119 let c4 = 1_u16 as i16;
120 let c5 = 1_u16 as i32;
121 let c6 = 1_u16 as i64;
122 let c7 = 1_u16 as u8;
123 let c8 = 1_u16 as u16;
124 let c9 = 1_u16 as u32;
125 let c10 = 1_u16 as u64;
126 let c11 = 1_u16 as f32;
127 let c12 = 1_u16 as f64;
abe05a73 128 let c13 = 1_u16 as *const String;
9cc50fc6
SL
129 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
130}
131
9cc50fc6 132fn from_1i16()
abe05a73 133-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
134 let c1 = 1_i16 as isize;
135 let c2 = 1_i16 as usize;
136 let c3 = 1_i16 as i8;
137 let c4 = 1_i16 as i16;
138 let c5 = 1_i16 as i32;
139 let c6 = 1_i16 as i64;
140 let c7 = 1_i16 as u8;
141 let c8 = 1_i16 as u16;
142 let c9 = 1_i16 as u32;
143 let c10 = 1_i16 as u64;
144 let c11 = 1_i16 as f32;
145 let c12 = 1_i16 as f64;
abe05a73 146 let c13 = 1_i16 as *const String;
9cc50fc6
SL
147 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
148}
149
9cc50fc6 150fn from_1u32()
abe05a73 151-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
152 let c1 = 1_u32 as isize;
153 let c2 = 1_u32 as usize;
154 let c3 = 1_u32 as i8;
155 let c4 = 1_u32 as i16;
156 let c5 = 1_u32 as i32;
157 let c6 = 1_u32 as i64;
158 let c7 = 1_u32 as u8;
159 let c8 = 1_u32 as u16;
160 let c9 = 1_u32 as u32;
161 let c10 = 1_u32 as u64;
162 let c11 = 1_u32 as f32;
163 let c12 = 1_u32 as f64;
abe05a73 164 let c13 = 1_u32 as *const String;
9cc50fc6
SL
165 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
166}
167
9cc50fc6 168fn from_1i32()
abe05a73 169-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
170 let c1 = 1_i32 as isize;
171 let c2 = 1_i32 as usize;
172 let c3 = 1_i32 as i8;
173 let c4 = 1_i32 as i16;
174 let c5 = 1_i32 as i32;
175 let c6 = 1_i32 as i64;
176 let c7 = 1_i32 as u8;
177 let c8 = 1_i32 as u16;
178 let c9 = 1_i32 as u32;
179 let c10 = 1_i32 as u64;
180 let c11 = 1_i32 as f32;
181 let c12 = 1_i32 as f64;
abe05a73 182 let c13 = 1_i32 as *const String;
9cc50fc6
SL
183 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
184}
185
9cc50fc6 186fn from_1u64()
abe05a73 187-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
188 let c1 = 1_u64 as isize;
189 let c2 = 1_u64 as usize;
190 let c3 = 1_u64 as i8;
191 let c4 = 1_u64 as i16;
192 let c5 = 1_u64 as i32;
193 let c6 = 1_u64 as i64;
194 let c7 = 1_u64 as u8;
195 let c8 = 1_u64 as u16;
196 let c9 = 1_u64 as u32;
197 let c10 = 1_u64 as u64;
198 let c11 = 1_u64 as f32;
199 let c12 = 1_u64 as f64;
abe05a73 200 let c13 = 1_u64 as *const String;
9cc50fc6
SL
201 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
202}
203
9cc50fc6 204fn from_1i64()
abe05a73 205-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64, *const String) {
9cc50fc6
SL
206 let c1 = 1_i64 as isize;
207 let c2 = 1_i64 as usize;
208 let c3 = 1_i64 as i8;
209 let c4 = 1_i64 as i16;
210 let c5 = 1_i64 as i32;
211 let c6 = 1_i64 as i64;
212 let c7 = 1_i64 as u8;
213 let c8 = 1_i64 as u16;
214 let c9 = 1_i64 as u32;
215 let c10 = 1_i64 as u64;
216 let c11 = 1_i64 as f32;
217 let c12 = 1_i64 as f64;
abe05a73 218 let c13 = 1_i64 as *const String;
9cc50fc6
SL
219 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)
220}
221
9cc50fc6
SL
222fn from_bool()
223-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64) {
224 let c1 = true as isize;
225 let c2 = true as usize;
226 let c3 = true as i8;
227 let c4 = true as i16;
228 let c5 = true as i32;
229 let c6 = true as i64;
230 let c7 = true as u8;
231 let c8 = true as u16;
232 let c9 = true as u32;
233 let c10 = true as u64;
234 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
235}
236
9cc50fc6
SL
237fn from_1f32()
238-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64) {
239 let c1 = 1.0_f32 as isize;
240 let c2 = 1.0_f32 as usize;
241 let c3 = 1.0_f32 as i8;
242 let c4 = 1.0_f32 as i16;
243 let c5 = 1.0_f32 as i32;
244 let c6 = 1.0_f32 as i64;
245 let c7 = 1.0_f32 as u8;
246 let c8 = 1.0_f32 as u16;
247 let c9 = 1.0_f32 as u32;
248 let c10 = 1.0_f32 as u64;
249 let c11 = 1.0_f32 as f32;
250 let c12 = 1.0_f32 as f64;
251 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
252}
253
9cc50fc6
SL
254fn from_1f64()
255-> (isize, usize, i8, i16, i32, i64, u8, u16, u32, u64, f32, f64) {
256 let c1 = 1.0f64 as isize;
257 let c2 = 1.0f64 as usize;
258 let c3 = 1.0f64 as i8;
259 let c4 = 1.0f64 as i16;
260 let c5 = 1.0f64 as i32;
261 let c6 = 1.0f64 as i64;
262 let c7 = 1.0f64 as u8;
263 let c8 = 1.0f64 as u16;
264 let c9 = 1.0f64 as u32;
265 let c10 = 1.0f64 as u64;
266 let c11 = 1.0f64 as f32;
267 let c12 = 1.0f64 as f64;
268 (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)
269}
270
9cc50fc6
SL
271fn other_casts()
272-> (*const u8, *const isize, *const u8, *const u8) {
273 let c1 = func as *const u8;
274 let c2 = c1 as *const isize;
275
276 let r = &42u32;
277 let _ = r as *const u32;
278
279 // fat-ptr -> fat-ptr -> fat-raw-ptr -> thin-ptr
280 let c3 = STR as &str as *const str as *const u8;
281
282 let c4 = BSTR as *const [u8] as *const [u16] as *const u8;
283 (c1, c2, c3, c4)
284}
285
286pub fn assert_eq_13(l: (isize, usize, i8, i16, i32, i64, u8,
abe05a73 287 u16, u32, u64, f32, f64, *const String),
9cc50fc6 288 r: (isize, usize, i8, i16, i32, i64, u8,
abe05a73 289 u16, u32, u64, f32, f64, *const String)) -> bool {
9cc50fc6
SL
290 let (l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13) = l;
291 let (r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13) = r;
292 l1 == r1 && l2 == r2 && l3 == r3 && l4 == r4 && l5 == r5 && l6 == r6 && l7 == r7 &&
293 l8 == r8 && l9 == r9 && l10 == r10 && l11 == r11 && l12 == r12 && l13 == r13
294}
295
296
297pub fn main() {
abe05a73 298 let f = 1_usize as *const String;
9cc50fc6
SL
299 let t13 = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0, f);
300 let t12 = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.0);
301 assert_eq_13(from_1(), t13);
302 assert_eq_13(from_1usize(), t13);
303 assert_eq_13(from_1isize(), t13);
304 assert_eq_13(from_1u8(), t13);
305 assert_eq_13(from_1i8(), t13);
306 assert_eq_13(from_1u16(), t13);
307 assert_eq_13(from_1i16(), t13);
308 assert_eq_13(from_1u32(), t13);
309 assert_eq_13(from_1i32(), t13);
310 assert_eq_13(from_1u64(), t13);
311 assert_eq_13(from_1i64(), t13);
312 assert_eq!(from_1f32(), t12);
313 assert_eq!(from_1f64(), t12);
314
315 assert_eq!(from_ptr(), (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 as *const ()));
316 assert_eq!(from_bool(), (1, 1, 1, 1, 1, 1, 1, 1, 1, 1));
317
318 assert_eq!(other_casts(), (func as *const u8, func as *const isize,
319 STR as *const str as *const u8, BSTR as *const [u8] as *const u8));
320}