mirror of https://github.com/astral-sh/ruff
Avoid autofixing some PT violations when comments are present (#3198)
This commit is contained in:
parent
159422071e
commit
f38624824d
|
|
@ -23,7 +23,7 @@ def test_error():
|
|||
"""
|
||||
|
||||
# recursive case
|
||||
assert not (a or not (b or c)) # note that we only reduce once here
|
||||
assert not (a or not (b or c))
|
||||
assert not (a or not (b and c))
|
||||
|
||||
# detected, but no autofix for messages
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ use rustpython_parser::ast::{
|
|||
|
||||
use ruff_macros::{define_violation, derive_message_formats};
|
||||
|
||||
use crate::ast::helpers::unparse_stmt;
|
||||
use crate::ast::helpers::{has_comments_in, unparse_stmt};
|
||||
use crate::ast::types::Range;
|
||||
use crate::ast::visitor::Visitor;
|
||||
use crate::ast::{visitor, whitespace};
|
||||
|
|
@ -187,7 +187,7 @@ fn check_assert_in_except(name: &str, body: &[Stmt]) -> Vec<Diagnostic> {
|
|||
/// PT009
|
||||
pub fn unittest_assertion(
|
||||
checker: &Checker,
|
||||
call: &Expr,
|
||||
expr: &Expr,
|
||||
func: &Expr,
|
||||
args: &[Expr],
|
||||
keywords: &[Keyword],
|
||||
|
|
@ -198,7 +198,8 @@ pub fn unittest_assertion(
|
|||
// We're converting an expression to a statement, so avoid applying the fix if
|
||||
// the assertion is part of a larger expression.
|
||||
let fixable = checker.current_expr_parent().is_none()
|
||||
&& matches!(checker.current_stmt().node, StmtKind::Expr { .. });
|
||||
&& matches!(checker.current_stmt().node, StmtKind::Expr { .. })
|
||||
&& !has_comments_in(Range::from_located(expr), checker.locator);
|
||||
let mut diagnostic = Diagnostic::new(
|
||||
UnittestAssertion {
|
||||
assertion: unittest_assert.to_string(),
|
||||
|
|
@ -210,8 +211,8 @@ pub fn unittest_assertion(
|
|||
if let Ok(stmt) = unittest_assert.generate_assert(args, keywords) {
|
||||
diagnostic.amend(Fix::replacement(
|
||||
unparse_stmt(&stmt, checker.stylist),
|
||||
call.location,
|
||||
call.end_location.unwrap(),
|
||||
expr.location,
|
||||
expr.end_location.unwrap(),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
@ -434,7 +435,9 @@ fn fix_composite_condition(stmt: &Stmt, locator: &Locator, stylist: &Stylist) ->
|
|||
pub fn composite_condition(checker: &mut Checker, stmt: &Stmt, test: &Expr, msg: Option<&Expr>) {
|
||||
let composite = is_composite_condition(test);
|
||||
if matches!(composite, CompositionKind::Simple | CompositionKind::Mixed) {
|
||||
let fixable = matches!(composite, CompositionKind::Simple) && msg.is_none();
|
||||
let fixable = matches!(composite, CompositionKind::Simple)
|
||||
&& msg.is_none()
|
||||
&& !has_comments_in(Range::from_located(stmt), checker.locator);
|
||||
let mut diagnostic =
|
||||
Diagnostic::new(CompositeAssertion { fixable }, Range::from_located(stmt));
|
||||
if fixable && checker.patch(diagnostic.kind.rule()) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue