mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-11 14:18:04 +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
|
@ -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);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue