]> git.lizzy.rs Git - rust.git/blob - tests/ui/checked_conversions.rs
Use the traits added to the Rust 2021 Edition prelude
[rust.git] / tests / ui / checked_conversions.rs
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 // Positive tests
11
12 // Signed to unsigned
13
14 pub fn i64_to_u32(value: i64) {
15     let _ = value <= (u32::max_value() as i64) && value >= 0;
16     let _ = value <= (u32::MAX as i64) && value >= 0;
17 }
18
19 pub fn i64_to_u16(value: i64) {
20     let _ = value <= i64::from(u16::max_value()) && value >= 0;
21     let _ = value <= i64::from(u16::MAX) && value >= 0;
22 }
23
24 pub fn isize_to_u8(value: isize) {
25     let _ = value <= (u8::max_value() as isize) && value >= 0;
26     let _ = value <= (u8::MAX as isize) && value >= 0;
27 }
28
29 // Signed to signed
30
31 pub fn i64_to_i32(value: i64) {
32     let _ = value <= (i32::max_value() as i64) && value >= (i32::min_value() as i64);
33     let _ = value <= (i32::MAX as i64) && value >= (i32::MIN as i64);
34 }
35
36 pub fn i64_to_i16(value: i64) {
37     let _ = value <= i64::from(i16::max_value()) && value >= i64::from(i16::min_value());
38     let _ = value <= i64::from(i16::MAX) && value >= i64::from(i16::MIN);
39 }
40
41 // Unsigned to X
42
43 pub fn u32_to_i32(value: u32) {
44     let _ = value <= i32::max_value() as u32;
45     let _ = value <= i32::MAX as u32;
46 }
47
48 pub fn usize_to_isize(value: usize) {
49     let _ = value <= isize::max_value() as usize && value as i32 == 5;
50     let _ = value <= isize::MAX as usize && value as i32 == 5;
51 }
52
53 pub fn u32_to_u16(value: u32) {
54     let _ = value <= u16::max_value() as u32 && value as i32 == 5;
55     let _ = value <= u16::MAX as u32 && value as i32 == 5;
56 }
57
58 // Negative tests
59
60 pub fn no_i64_to_i32(value: i64) {
61     let _ = value <= (i32::max_value() as i64) && value >= 0;
62     let _ = value <= (i32::MAX as i64) && value >= 0;
63 }
64
65 pub fn no_isize_to_u8(value: isize) {
66     let _ = value <= (u8::max_value() as isize) && value >= (u8::min_value() as isize);
67     let _ = value <= (u8::MAX as isize) && value >= (u8::MIN as isize);
68 }
69
70 pub fn i8_to_u8(value: i8) {
71     let _ = value >= 0;
72 }
73
74 fn main() {}