mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-23 04:55:09 +00:00
Avoid marking inner-parenthesized comments as dangling bracket comments (#6517)
## Summary The bracketed-end-of-line comment rule is meant to assign comments like this as "immediately following the bracket": ```python f( # comment 1 ) ``` However, the logic was such that we treated this equivalently: ```python f( ( # comment 1 ) ) ``` This PR modifies the placement logic to ensure that we only skip the opening bracket, and not any nested brackets. The above is now formatted as: ```python f( ( # comment 1 ) ) ``` (But will be corrected once we handle parenthesized comments properly.) ## Test Plan `cargo test` Confirmed no change in similarity score.
This commit is contained in:
parent
f16e780e0a
commit
40407dcce5
3 changed files with 32 additions and 7 deletions
|
@ -1150,14 +1150,20 @@ fn handle_bracketed_end_of_line_comment<'a>(
|
|||
locator.contents(),
|
||||
TextRange::new(comment.enclosing_node().start(), comment.start()),
|
||||
)
|
||||
.skip_trivia()
|
||||
.skip_while(|t| {
|
||||
matches!(
|
||||
t.kind(),
|
||||
SimpleTokenKind::LParen | SimpleTokenKind::LBrace | SimpleTokenKind::LBracket
|
||||
)
|
||||
});
|
||||
.skip_trivia();
|
||||
|
||||
// Skip the opening parenthesis.
|
||||
let Some(paren) = lexer.next() else {
|
||||
return CommentPlacement::Default(comment);
|
||||
};
|
||||
debug_assert!(matches!(
|
||||
paren.kind(),
|
||||
SimpleTokenKind::LParen | SimpleTokenKind::LBrace | SimpleTokenKind::LBracket
|
||||
));
|
||||
|
||||
// If there are no additional tokens between the open parenthesis and the comment, then
|
||||
// it should be attached as a dangling comment on the brackets, rather than a leading
|
||||
// comment on the first argument.
|
||||
if lexer.next().is_none() {
|
||||
return CommentPlacement::dangling(comment.enclosing_node(), comment);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue