diff --git a/crates/ruff_python_formatter/src/comments/placement.rs b/crates/ruff_python_formatter/src/comments/placement.rs index 1f763563f0..e1f620845b 100644 --- a/crates/ruff_python_formatter/src/comments/placement.rs +++ b/crates/ruff_python_formatter/src/comments/placement.rs @@ -1861,17 +1861,12 @@ fn handle_unary_op_comment<'a>( | SimpleTokenKind::Plus | SimpleTokenKind::Minus ))); - let lparen_start = tokenizer - .find(|token| token.kind == SimpleTokenKind::LParen) - .map(|lparen| lparen.start()); - let up_to = lparen_start.unwrap_or(unary_op.operand.start()); - if lparen_start.is_none() + let lparen = tokenizer.find(|token| token.kind == SimpleTokenKind::LParen); + if lparen.is_none() && comment.end() < unary_op.operand.start() && comment.line_position().is_end_of_line() { CommentPlacement::dangling(unary_op, comment) - } else if comment.end() < up_to { - CommentPlacement::leading(unary_op, comment) } else { CommentPlacement::Default(comment) } diff --git a/crates/ruff_python_formatter/tests/snapshots/format@expression__unary.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@expression__unary.py.snap index 74ba326706..f2dbce006b 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@expression__unary.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@expression__unary.py.snap @@ -254,31 +254,35 @@ if +( pass if ( + not # comment - not aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ): pass if ( + ~ # comment - ~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ): pass if ( + - # comment - -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ): pass if ( + + # comment - +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ): pass @@ -287,8 +291,8 @@ if ( if ( # unary comment - # operand comment - not ( + not # operand comment + ( # comment aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb @@ -363,8 +367,9 @@ if ( pass if ( + not # comment - not a + a ): pass @@ -384,9 +389,9 @@ if True: # Regression test for: https://github.com/astral-sh/ruff/issues/7448 x = ( # a - # b + not # b # c - not ( # d + ( # d # e True ) diff --git a/crates/ruff_python_formatter/tests/snapshots/format@parentheses__expression_parentheses_comments.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@parentheses__expression_parentheses_comments.py.snap index 5e8e826231..4a145d5e70 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@parentheses__expression_parentheses_comments.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@parentheses__expression_parentheses_comments.py.snap @@ -1,7 +1,6 @@ --- source: crates/ruff_python_formatter/tests/fixtures.rs input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/parentheses/expression_parentheses_comments.py -snapshot_kind: text --- ## Input ```python @@ -179,13 +178,13 @@ nested_parentheses4 = [ x = ( # unary comment - # in-between comment - not ( + not # in-between comment + ( # leading inner "a" ), - # in-between comment - not ( + not # in-between comment + ( # leading inner "b" ), @@ -194,8 +193,8 @@ x = ( "c" ), # 1 - # 2 - not ( # 3 + not # 2 + ( # 3 # 4 "d" ), @@ -203,8 +202,8 @@ x = ( if ( # unary comment - # in-between comment - not ( + not # in-between comment + ( # leading inner 1 )