Skip to content

Commit 334bab2

Browse files
committed
[overly_complex_bool_expr]: Fix trigger wrongly on never type
1 parent c642d0c commit 334bab2

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

clippy_lints/src/booleans.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,11 @@ impl<'a, 'tcx, 'v> Hir2Qmm<'a, 'tcx, 'v> {
232232
_ => (),
233233
}
234234
}
235+
236+
if self.cx.typeck_results().expr_ty(e).is_never() {
237+
return Err("contains never type".to_owned());
238+
}
239+
235240
for (n, expr) in self.terminals.iter().enumerate() {
236241
if eq_expr_value(self.cx, e, expr) {
237242
#[expect(clippy::cast_possible_truncation)]

tests/ui/overly_complex_bool_expr.fixed

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,13 @@ fn check_expect() {
3737
#[expect(clippy::overly_complex_bool_expr)]
3838
let _ = a < b && a >= b;
3939
}
40+
41+
#[allow(clippy::never_loop)]
42+
fn check_never_type() {
43+
loop {
44+
_ = (break) || true;
45+
}
46+
loop {
47+
_ = (return) || true;
48+
}
49+
}

tests/ui/overly_complex_bool_expr.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,13 @@ fn check_expect() {
3737
#[expect(clippy::overly_complex_bool_expr)]
3838
let _ = a < b && a >= b;
3939
}
40+
41+
#[allow(clippy::never_loop)]
42+
fn check_never_type() {
43+
loop {
44+
_ = (break) || true;
45+
}
46+
loop {
47+
_ = (return) || true;
48+
}
49+
}

0 commit comments

Comments
 (0)