mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-14 00:47:16 +00:00
Auto merge of #12083 - cocodery:fix/issue11932, r=Alexendoo
Fix/Issue11932: assert* in multi-condition after unrolling will cause lint `nonminimal_bool` emit warning fixes [Issue#11932](https://github.com/rust-lang/rust-clippy/issues/11932) After `assert`, `assert_eq`, `assert_ne`, etc, assert family marcos unrolling in multi-condition expressions, lint `nonminimal_bool` will recognize whole expression as a entirety, analyze each simple condition expr of them, and check whether can simplify them. But `assert` itself is a entirety to programmers, we don't need to lint on `assert`. This commit add check whether lint snippet contains `assert` when try to warning to an expression. changelog: [`nonminimal_bool`] add check for condition expression
This commit is contained in:
commit
276ce3936b
2 changed files with 12 additions and 0 deletions
|
@ -499,6 +499,7 @@ struct NotSimplificationVisitor<'a, 'tcx> {
|
|||
impl<'a, 'tcx> Visitor<'tcx> for NotSimplificationVisitor<'a, 'tcx> {
|
||||
fn visit_expr(&mut self, expr: &'tcx Expr<'_>) {
|
||||
if let ExprKind::Unary(UnOp::Not, inner) = &expr.kind
|
||||
&& !expr.span.from_expansion()
|
||||
&& !inner.span.from_expansion()
|
||||
&& let Some(suggestion) = simplify_not(self.cx, inner)
|
||||
&& self.cx.tcx.lint_level_at_node(NONMINIMAL_BOOL, expr.hir_id).0 != Level::Allow
|
||||
|
|
|
@ -145,3 +145,14 @@ fn issue10836() {
|
|||
// Should not lint
|
||||
let _: bool = !!Foo(true);
|
||||
}
|
||||
|
||||
fn issue11932() {
|
||||
let x: i32 = unimplemented!();
|
||||
|
||||
#[allow(clippy::nonminimal_bool)]
|
||||
let _ = x % 2 == 0 || {
|
||||
// Should not lint
|
||||
assert!(x > 0);
|
||||
x % 3 == 0
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue