]> git.lizzy.rs Git - rust.git/blob - tests/ui/checked_conversions.fixed
12290db3dcf52adb00bbb3232d74234be2ab06fc
[rust.git] / tests / ui / checked_conversions.fixed
1 // run-rustfix
2
3 #![allow(
4     clippy::cast_lossless,
5     // Int::max_value will be deprecated in the future
6     deprecated,
7 )]
8 #![warn(clippy::checked_conversions)]
9
10 use std::convert::TryFrom;
11
12 // Positive tests
13
14 // Signed to unsigned
15
16 pub fn i64_to_u32(value: i64) {
17     let _ = u32::try_from(value).is_ok();
18     let _ = u32::try_from(value).is_ok();
19 }
20
21 pub fn i64_to_u16(value: i64) {
22     let _ = u16::try_from(value).is_ok();
23     let _ = u16::try_from(value).is_ok();
24 }
25
26 pub fn isize_to_u8(value: isize) {
27     let _ = u8::try_from(value).is_ok();
28     let _ = u8::try_from(value).is_ok();
29 }
30
31 // Signed to signed
32
33 pub fn i64_to_i32(value: i64) {
34     let _ = i32::try_from(value).is_ok();
35     let _ = i32::try_from(value).is_ok();
36 }
37
38 pub fn i64_to_i16(value: i64) {
39     let _ = i16::try_from(value).is_ok();
40     let _ = i16::try_from(value).is_ok();
41 }
42
43 // Unsigned to X
44
45 pub fn u32_to_i32(value: u32) {
46     let _ = i32::try_from(value).is_ok();
47     let _ = i32::try_from(value).is_ok();
48 }
49
50 pub fn usize_to_isize(value: usize) {
51     let _ = isize::try_from(value).is_ok() && value as i32 == 5;
52     let _ = isize::try_from(value).is_ok() && value as i32 == 5;
53 }
54
55 pub fn u32_to_u16(value: u32) {
56     let _ = u16::try_from(value).is_ok() && value as i32 == 5;
57     let _ = u16::try_from(value).is_ok() && value as i32 == 5;
58 }
59
60 // Negative tests
61
62 pub fn no_i64_to_i32(value: i64) {
63     let _ = value <= (i32::max_value() as i64) && value >= 0;
64     let _ = value <= (i32::MAX as i64) && value >= 0;
65 }
66
67 pub fn no_isize_to_u8(value: isize) {
68     let _ = value <= (u8::max_value() as isize) && value >= (u8::min_value() as isize);
69     let _ = value <= (u8::MAX as isize) && value >= (u8::MIN as isize);
70 }
71
72 pub fn i8_to_u8(value: i8) {
73     let _ = value >= 0;
74 }
75
76 fn main() {}