dangling operator comment

fix leading comments
This commit is contained in:
Brent Westbrook 2025-11-12 15:01:39 -05:00
parent a303d1aa49
commit ecccfd2a56
No known key found for this signature in database
3 changed files with 34 additions and 46 deletions

View File

@ -1861,11 +1861,17 @@ fn handle_unary_op_comment<'a>(
| SimpleTokenKind::Plus | SimpleTokenKind::Plus
| SimpleTokenKind::Minus | SimpleTokenKind::Minus
))); )));
let up_to = tokenizer let lparen_start = tokenizer
.find(|token| token.kind == SimpleTokenKind::LParen) .find(|token| token.kind == SimpleTokenKind::LParen)
.map_or(unary_op.operand.start(), |lparen| lparen.start()); .map(|lparen| lparen.start());
if comment.end() < up_to { let up_to = lparen_start.unwrap_or(unary_op.operand.start());
CommentPlacement::leading(&*unary_op.operand, comment) if lparen_start.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 { } else {
CommentPlacement::Default(comment) CommentPlacement::Default(comment)
} }

View File

@ -254,35 +254,31 @@ if +(
pass pass
if ( if (
not
# comment # comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa not aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
if ( if (
~
# comment # comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
if ( if (
-
# comment # comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
if ( if (
+
# comment # comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
@ -291,8 +287,8 @@ if (
if ( if (
# unary comment # unary comment
not # operand comment # operand comment
( not (
# comment # comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
@ -327,35 +323,27 @@ if (
## Trailing operator comments ## Trailing operator comments
if ( if (
not not aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # comment
# comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
if ( if (
~ ~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # comment
# comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
if ( if (
- -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # comment
# comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
if ( if (
+ +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # comment
# comment
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
): ):
pass pass
@ -375,17 +363,12 @@ if (
pass pass
if ( if (
not
# comment # comment
a not a
): ):
pass pass
if ( if not a: # comment
not
# comment
a
):
pass pass
# Regression test for: https://github.com/astral-sh/ruff/issues/7423 # Regression test for: https://github.com/astral-sh/ruff/issues/7423
@ -401,9 +384,9 @@ if True:
# Regression test for: https://github.com/astral-sh/ruff/issues/7448 # Regression test for: https://github.com/astral-sh/ruff/issues/7448
x = ( x = (
# a # a
not # b # b
# c # c
( # d not ( # d
# e # e
True True
) )
@ -435,9 +418,7 @@ def foo():
# Regression test for https://github.com/astral-sh/ruff/issues/19226 # Regression test for https://github.com/astral-sh/ruff/issues/19226
if "" and ( if "" and (
not not 0 #
#
0
): ):
pass pass
``` ```

View File

@ -1,6 +1,7 @@
--- ---
source: crates/ruff_python_formatter/tests/fixtures.rs source: crates/ruff_python_formatter/tests/fixtures.rs
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/parentheses/expression_parentheses_comments.py input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/parentheses/expression_parentheses_comments.py
snapshot_kind: text
--- ---
## Input ## Input
```python ```python
@ -178,13 +179,13 @@ nested_parentheses4 = [
x = ( x = (
# unary comment # unary comment
not # in-between comment # in-between comment
( not (
# leading inner # leading inner
"a" "a"
), ),
not # in-between comment # in-between comment
( not (
# leading inner # leading inner
"b" "b"
), ),
@ -193,8 +194,8 @@ x = (
"c" "c"
), ),
# 1 # 1
not # 2 # 2
( # 3 not ( # 3
# 4 # 4
"d" "d"
), ),
@ -202,8 +203,8 @@ x = (
if ( if (
# unary comment # unary comment
not # in-between comment # in-between comment
( not (
# leading inner # leading inner
1 1
) )