-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathbool_to_int_with_if.fixed
118 lines (98 loc) · 1.67 KB
/
bool_to_int_with_if.fixed
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
#![feature(let_chains)]
#![warn(clippy::bool_to_int_with_if)]
#![allow(unused, dead_code, clippy::unnecessary_operation, clippy::no_effect)]
fn main() {
let a = true;
let b = false;
let x = 1;
let y = 2;
// Should lint
// precedence
i32::from(a);
i32::from(!a);
i32::from(!a);
i32::from(a || b);
i32::from(cond(a, b));
i32::from(x + y < 4);
// if else if
if a {
123
} else { i32::from(b) };
// if else if inverted
if a {
123
} else { i32::from(!b) };
// Shouldn't lint
if a {
1
} else if b {
0
} else {
3
};
if a {
3
} else if b {
1
} else {
-2
};
if a {
3
} else {
0
};
if a {
side_effect();
1
} else {
0
};
if a {
1
} else {
side_effect();
0
};
// multiple else ifs
if a {
123
} else if b {
1
} else if a | b {
0
} else {
123
};
pub const SHOULD_NOT_LINT: usize = if true { 1 } else { 0 };
// https://github.com/rust-lang/rust-clippy/issues/10452
let should_not_lint = [(); if true { 1 } else { 0 }];
let should_not_lint = const { if true { 1 } else { 0 } };
some_fn(a);
}
// Lint returns and type inference
fn some_fn(a: bool) -> u8 {
u8::from(a)
}
fn side_effect() {}
fn cond(a: bool, b: bool) -> bool {
a || b
}
enum Enum {
A,
B,
}
fn if_let(a: Enum, b: Enum) {
if let Enum::A = a {
1
} else {
0
};
if let Enum::A = a
&& let Enum::B = b
{
1
} else {
0
};
}