feat: let SIM103 return expressions without bool() wrapping (#2410)

This commit is contained in:
Florian Best 2023-01-31 22:11:44 +01:00 committed by GitHub
parent d601abe01b
commit 1dd9ccf7f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 21 deletions

View File

@ -6,6 +6,14 @@ def f():
return False
def f():
# SIM103
if a == b:
return True
else:
return False
def f():
# SIM103
if a:

View File

@ -184,7 +184,11 @@ pub fn return_bool_condition_directly(checker: &mut Checker, stmt: &Stmt) {
&& matches!(else_return, Bool::False)
&& !has_comments(stmt, checker.locator)
{
let return_stmt = create_stmt(StmtKind::Return {
let return_stmt = match test.node {
ExprKind::Compare { .. } => create_stmt(StmtKind::Return {
value: Some(test.clone()),
}),
_ => create_stmt(StmtKind::Return {
value: Some(Box::new(create_expr(ExprKind::Call {
func: Box::new(create_expr(ExprKind::Name {
id: "bool".to_string(),
@ -193,7 +197,8 @@ pub fn return_bool_condition_directly(checker: &mut Checker, stmt: &Stmt) {
args: vec![(**test).clone()],
keywords: vec![],
}))),
});
}),
};
diagnostic.amend(Fix::replacement(
unparse_stmt(&return_stmt, checker.stylist),
stmt.location,

View File

@ -23,50 +23,69 @@ expression: diagnostics
parent: ~
- kind:
ReturnBoolConditionDirectly:
cond: b
cond: a == b
location:
row: 13
row: 11
column: 4
end_location:
row: 16
row: 14
column: 20
fix:
content:
- return bool(b)
- return a == b
location:
row: 13
row: 11
column: 4
end_location:
row: 16
row: 14
column: 20
parent: ~
- kind:
ReturnBoolConditionDirectly:
cond: b
location:
row: 21
column: 4
end_location:
row: 24
column: 20
fix:
content:
- return bool(b)
location:
row: 21
column: 4
end_location:
row: 24
column: 20
parent: ~
- kind:
ReturnBoolConditionDirectly:
cond: b
location:
row: 32
column: 8
end_location:
row: 27
row: 35
column: 24
fix:
content:
- return bool(b)
location:
row: 24
row: 32
column: 8
end_location:
row: 27
row: 35
column: 24
parent: ~
- kind:
ReturnBoolConditionDirectly:
cond: a
location:
row: 49
row: 57
column: 4
end_location:
row: 52
row: 60
column: 19
fix: ~
parent: ~