Skip to content

Commit 1105e9d

Browse files
committed
Auto merge of rust-lang#12700 - Luv-Ray:overly_complex_bool_expr, r=Jarcho
[`overly_complex_bool_expr`]: Fix trigger wrongly on never type fixes rust-lang#12689 --- changelog: fix [`overly_complex_bool_expr`] triggers wrongly on never type
2 parents bc00d7b + 334bab2 commit 1105e9d

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
@@ -251,6 +251,11 @@ impl<'a, 'tcx, 'v> Hir2Qmm<'a, 'tcx, 'v> {
251251
_ => (),
252252
}
253253
}
254+
255+
if self.cx.typeck_results().expr_ty(e).is_never() {
256+
return Err("contains never type".to_owned());
257+
}
258+
254259
for (n, expr) in self.terminals.iter().enumerate() {
255260
if eq_expr_value(self.cx, e, expr) {
256261
#[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)