]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
9cc50fc6 SL |
2 | fn func(){} |
3 | ||
4 | const STR: &'static str = "hello"; | |
5 | const BSTR: &'static [u8; 5] = b"hello"; | |
6 | ||
9cc50fc6 SL |
7 | fn 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 | 24 | fn 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 | 42 | fn 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 | 60 | fn 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 | 78 | fn 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 | 96 | fn 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 | 114 | fn 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 | 132 | fn 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 | 150 | fn 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 | 168 | fn 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 | 186 | fn 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 | 204 | fn 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 |
222 | fn 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 |
237 | fn 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 |
254 | fn 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 |
271 | fn 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 | ||
286 | pub 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 | ||
297 | pub 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 | } |