]> git.lizzy.rs Git - rust.git/blob - tests/ui/cast_lossless_bool.rs
Auto merge of #9622 - llogiq:box-dyn-default, r=Alexendoo
[rust.git] / tests / ui / cast_lossless_bool.rs
1 // run-rustfix
2
3 #![feature(custom_inner_attributes)]
4 #![allow(dead_code)]
5 #![warn(clippy::cast_lossless)]
6
7 fn main() {
8     // Test clippy::cast_lossless with casts to integer types
9     let _ = true as u8;
10     let _ = true as u16;
11     let _ = true as u32;
12     let _ = true as u64;
13     let _ = true as u128;
14     let _ = true as usize;
15
16     let _ = true as i8;
17     let _ = true as i16;
18     let _ = true as i32;
19     let _ = true as i64;
20     let _ = true as i128;
21     let _ = true as isize;
22
23     // Test with an expression wrapped in parens
24     let _ = (true | false) as u16;
25 }
26
27 // The lint would suggest using `u32::from(input)` here but the `XX::from` function is not const,
28 // so we skip the lint if the expression is in a const fn.
29 // See #3656
30 const fn abc(input: bool) -> u32 {
31     input as u32
32 }
33
34 // Same as the above issue. We can't suggest `::from` in const fns in impls
35 mod cast_lossless_in_impl {
36     struct A;
37
38     impl A {
39         pub const fn convert(x: bool) -> u64 {
40             x as u64
41         }
42     }
43 }
44
45 fn msrv_1_27() {
46     #![clippy::msrv = "1.27"]
47
48     let _ = true as u8;
49 }
50
51 fn msrv_1_28() {
52     #![clippy::msrv = "1.28"]
53
54     let _ = true as u8;
55 }