Skip to content

Commit

Permalink
Avoid double negative in SIM103
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed Jun 1, 2024
1 parent b80bf22 commit 6a819f2
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,10 @@ def f():
if a:
return False
return True


def f():
if not 10 < a:
return False

return True
Original file line number Diff line number Diff line change
Expand Up @@ -202,11 +202,20 @@ pub(crate) fn needless_bool(checker: &mut Checker, stmt: &Stmt) {
} else {
// If the return values are inverted, wrap the condition in a `not`.
if inverted {
Some(Expr::UnaryOp(ast::ExprUnaryOp {
if let Expr::UnaryOp(ast::ExprUnaryOp {
op: ast::UnaryOp::Not,
operand: Box::new(if_test.clone()),
range: TextRange::default(),
}))
operand,
..
}) = if_test
{
Some((&**operand).clone())
} else {
Some(Expr::UnaryOp(ast::ExprUnaryOp {
op: ast::UnaryOp::Not,
operand: Box::new(if_test.clone()),
range: TextRange::default(),
}))
}
} else if if_test.is_compare_expr() {
// If the condition is a comparison, we can replace it with the condition, since we
// know it's a boolean.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,3 +213,28 @@ SIM103.py:111:5: SIM103 [*] Return the condition `not a` directly
112 |- return False
113 |- return True
111 |+ return not a
114 112 |
115 113 |
116 114 | def f():

SIM103.py:117:5: SIM103 [*] Return the condition `10 < a` directly
|
116 | def f():
117 | if not 10 < a:
| _____^
118 | | return False
119 | |
120 | | return True
| |_______________^ SIM103
|
= help: Replace with `return 10 < a`

Unsafe fix
114 114 |
115 115 |
116 116 | def f():
117 |- if not 10 < a:
118 |- return False
119 |-
120 |- return True
117 |+ return 10 < a

0 comments on commit 6a819f2

Please sign in to comment.