mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-03 18:28:24 +00:00
Fix placement for comments within f-strings concatenations (#7047)
## Summary Restores the dangling comment handling for f-strings, which broke with the parenthesized expression code. Closes https://github.com/astral-sh/ruff/issues/6898. ## Test Plan `cargo test` No change in any of the similarity indexes or changed file counts: | project | similarity index | total files | changed files | |--------------|------------------:|------------------:|------------------:| | cpython | 0.76083 | 1789 | 1632 | | django | 0.99957 | 2760 | 67 | | transformers | 0.99927 | 2587 | 468 | | twine | 0.99982 | 33 | 1 | | typeshed | 0.99978 | 3496 | 2173 | | warehouse | 0.99818 | 648 | 24 | | zulip | 0.99942 | 1437 | 32 |
This commit is contained in:
parent
fbc9b5a604
commit
dea65536e9
3 changed files with 86 additions and 0 deletions
|
@ -33,3 +33,27 @@ result_f = (
|
|||
# comment
|
||||
''
|
||||
)
|
||||
|
||||
(
|
||||
f'{1}' # comment
|
||||
f'{2}'
|
||||
)
|
||||
|
||||
(
|
||||
f'{1}'
|
||||
f'{2}' # comment
|
||||
)
|
||||
|
||||
(
|
||||
1, ( # comment
|
||||
f'{2}'
|
||||
)
|
||||
)
|
||||
|
||||
(
|
||||
(
|
||||
f'{1}'
|
||||
# comment
|
||||
),
|
||||
2
|
||||
)
|
||||
|
|
|
@ -70,6 +70,20 @@ fn handle_parenthesized_comment<'a>(
|
|||
comment: DecoratedComment<'a>,
|
||||
locator: &Locator,
|
||||
) -> CommentPlacement<'a> {
|
||||
// As a special-case, ignore comments within f-strings, like:
|
||||
// ```python
|
||||
// (
|
||||
// f'{1}' # comment
|
||||
// f'{2}'
|
||||
// )
|
||||
// ```
|
||||
// These can't be parenthesized, as they must fall between two string tokens in an implicit
|
||||
// concatenation. But the expression ranges only include the `1` and `2` above, so we also
|
||||
// can't lex the contents between them.
|
||||
if comment.enclosing_node().is_expr_f_string() {
|
||||
return CommentPlacement::Default(comment);
|
||||
}
|
||||
|
||||
let Some(preceding) = comment.preceding_node() else {
|
||||
return CommentPlacement::Default(comment);
|
||||
};
|
||||
|
|
|
@ -39,6 +39,30 @@ result_f = (
|
|||
# comment
|
||||
''
|
||||
)
|
||||
|
||||
(
|
||||
f'{1}' # comment
|
||||
f'{2}'
|
||||
)
|
||||
|
||||
(
|
||||
f'{1}'
|
||||
f'{2}' # comment
|
||||
)
|
||||
|
||||
(
|
||||
1, ( # comment
|
||||
f'{2}'
|
||||
)
|
||||
)
|
||||
|
||||
(
|
||||
(
|
||||
f'{1}'
|
||||
# comment
|
||||
),
|
||||
2
|
||||
)
|
||||
```
|
||||
|
||||
## Output
|
||||
|
@ -76,6 +100,30 @@ result_f = (
|
|||
# comment
|
||||
""
|
||||
)
|
||||
|
||||
(
|
||||
f"{1}" # comment
|
||||
f"{2}"
|
||||
)
|
||||
|
||||
(
|
||||
f"{1}" f"{2}" # comment
|
||||
)
|
||||
|
||||
(
|
||||
1,
|
||||
( # comment
|
||||
f"{2}"
|
||||
),
|
||||
)
|
||||
|
||||
(
|
||||
(
|
||||
f"{1}"
|
||||
# comment
|
||||
),
|
||||
2,
|
||||
)
|
||||
```
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue