mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 12:55:05 +00:00
Rewrite placement logic (#6040)
## Summary This is a rewrite of the main comment placement logic. `place_comment` now has three parts: - place own line comments - between branches - after a branch - place end-of-line comments - after colon - after a branch - place comments for specific nodes (that include module level comments) The rewrite fixed three bugs: `class A: # trailing comment` comments now stay end-of-line, `try: # comment` remains end-of-line and deeply indented try-else-finally comments remain with the right nested statement. It will be much easier to give more alternative branches nodes since this is abstracted away by `is_node_with_body` and the first/last child helpers. Adding new node types can now be done by adding an entry to the `place_comment` match. The code went from 1526 lines before #6033 to 1213 lines now. It thinks it easier to just read the new `placement.rs` rather than reviewing the diff. ## Test Plan The existing fixtures staying the same or improving plus new ones for the bug fixes.
This commit is contained in:
parent
2cf00fee96
commit
13f9a16e33
14 changed files with 541 additions and 673 deletions
|
@ -132,14 +132,12 @@ impl FormatNodeRule<ExprSlice> for FormatExprSlice {
|
|||
let step_leading_comments = comments.leading_comments(step.as_ref());
|
||||
leading_comments_spacing(f, step_leading_comments)?;
|
||||
step.format().fmt(f)?;
|
||||
} else {
|
||||
if !dangling_step_comments.is_empty() {
|
||||
// Put the colon and comments on their own lines
|
||||
write!(
|
||||
f,
|
||||
[hard_line_break(), dangling_comments(dangling_step_comments)]
|
||||
)?;
|
||||
}
|
||||
} else if !dangling_step_comments.is_empty() {
|
||||
// Put the colon and comments on their own lines
|
||||
write!(
|
||||
f,
|
||||
[hard_line_break(), dangling_comments(dangling_step_comments)]
|
||||
)?;
|
||||
}
|
||||
} else {
|
||||
debug_assert!(step.is_none(), "step can't exist without a second colon");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue