summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/unnecessary_cast.fixed
blob: ec8c6abfab91e725891f268967c59dabcb101e13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// run-rustfix
#![warn(clippy::unnecessary_cast)]
#![allow(
    unused_must_use,
    clippy::borrow_as_ptr,
    clippy::no_effect,
    clippy::nonstandard_macro_braces,
    clippy::unnecessary_operation
)]

#[rustfmt::skip]
fn main() {
    // Test cast_unnecessary
    1_i32;
    1_f32;
    false;
    &1i32 as &i32;

    -1_i32;
    - 1_i32;
    -1_f32;
    1_i32;
    1_f32;

    // macro version
    macro_rules! foo {
        ($a:ident, $b:ident) => {
            #[allow(unused)]
            pub fn $a() -> $b {
                1 as $b
            }
        };
    }
    foo!(a, i32);
    foo!(b, f32);
    foo!(c, f64);

    // do not lint cast to cfg-dependant type
    1 as std::os::raw::c_char;

    // do not lint cast to alias type
    1 as I32Alias;
    &1 as &I32Alias;
}

type I32Alias = i32;

mod fixable {
    #![allow(dead_code)]

    fn main() {
        // casting integer literal to float is unnecessary
        100_f32;
        100_f64;
        100_f64;
        let _ = -100_f32;
        let _ = -100_f64;
        let _ = -100_f64;
        100_f32;
        100_f64;
        // Should not trigger
        #[rustfmt::skip]
        let v = vec!(1);
        &v as &[i32];
        0x10 as f32;
        0o10 as f32;
        0b10 as f32;
        0x11 as f64;
        0o11 as f64;
        0b11 as f64;

        1_u32;
        0x10_i32;
        0b10_usize;
        0o73_u16;
        1_000_000_000_u32;

        1.0_f64;
        0.5_f32;

        1.0 as u16;

        let _ = -1_i32;
        let _ = -1.0_f32;

        let _ = 1 as I32Alias;
        let _ = &1 as &I32Alias;
    }

    type I32Alias = i32;

    fn issue_9380() {
        let _: i32 = -1_i32;
        let _: f32 = -(1) as f32;
        let _: i64 = -1_i64;
        let _: i64 = -(1.0) as i64;

        let _ = -(1 + 1) as i64;
    }

    fn issue_9563() {
        let _: f64 = (-8.0_f64).exp();
        #[allow(clippy::precedence)]
        let _: f64 = -8.0_f64.exp(); // should suggest `-8.0_f64.exp()` here not to change code behavior
    }

    fn issue_9562_non_literal() {
        fn foo() -> f32 {
            0.
        }

        let _num = foo();
    }

    fn issue_9603() {
        let _: f32 = -0x400 as f32;
    }
}