mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-19 18:11:08 +00:00
Handle open-parenthesis comments on match case (#6798)
## Summary Ensures that we retain the open-parenthesis comment in cases like: ```python match pattern_comments: case ( # leading only_leading ): ... ``` Previously, this was treated as a leading comment on `only_leading`. ## Test Plan `cargo test`
This commit is contained in:
parent
5f5de52aba
commit
4bc5eddf91
4 changed files with 37 additions and 20 deletions
|
@ -210,6 +210,7 @@ fn handle_enclosed_comment<'a>(
|
|||
handle_leading_class_with_decorators_comment(comment, class_def)
|
||||
}
|
||||
AnyNodeRef::StmtImportFrom(import_from) => handle_import_from_comment(comment, import_from),
|
||||
AnyNodeRef::MatchCase(match_case) => handle_match_case_comment(comment, match_case),
|
||||
AnyNodeRef::StmtWith(with_) => handle_with_comment(comment, with_),
|
||||
AnyNodeRef::ExprConstant(_) => {
|
||||
if let Some(AnyNodeRef::ExprFString(fstring)) = comment.enclosing_parent() {
|
||||
|
@ -1303,6 +1304,28 @@ fn handle_import_from_comment<'a>(
|
|||
}
|
||||
}
|
||||
|
||||
/// Attach an enclosed end-of-line comment to a [`MatchCase`].
|
||||
///
|
||||
/// For example, given:
|
||||
/// ```python
|
||||
/// case ( # comment
|
||||
/// pattern
|
||||
/// ):
|
||||
/// ...
|
||||
/// ```
|
||||
///
|
||||
/// The comment will be attached to the [`MatchCase`] node as a dangling comment.
|
||||
fn handle_match_case_comment<'a>(
|
||||
comment: DecoratedComment<'a>,
|
||||
match_case: &'a MatchCase,
|
||||
) -> CommentPlacement<'a> {
|
||||
if comment.line_position().is_end_of_line() && comment.start() < match_case.pattern.start() {
|
||||
CommentPlacement::dangling(comment.enclosing_node(), comment)
|
||||
} else {
|
||||
CommentPlacement::Default(comment)
|
||||
}
|
||||
}
|
||||
|
||||
/// Attach an enclosed end-of-line comment to a [`ast::StmtWith`].
|
||||
///
|
||||
/// For example, given:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue