mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-24 13:33:50 +00:00
Correctly handle newlines after/before comments (#4895)
<!-- Thank you for contributing to Ruff! To help us out with reviewing, please consider the following: - Does this pull request include a summary of the change? (See below.) - Does this pull request include a descriptive title? - Does this pull request include references to any relevant issues? --> ## Summary This issue fixes the removal of empty lines between a leading comment and the previous statement: ```python a = 20 # leading comment b = 10 ``` Ruff removed the empty line between `a` and `b` because: * The leading comments formatting does not preserve leading newlines (to avoid adding new lines at the top of a body) * The `JoinNodesBuilder` counted the lines before `b`, which is 1 -> Doesn't insert a new line This is fixed by changing the `JoinNodesBuilder` to count the lines instead *after* the last node. This correctly gives 1, and the `# leading comment` will insert the empty lines between any other leading comment or the node. ## Test Plan I added a new test for empty lines.
This commit is contained in:
parent
222ca98a41
commit
6ab3fc60f4
19 changed files with 332 additions and 124 deletions
32
crates/ruff_python_formatter/resources/test/fixtures/ruff/trivia.py
vendored
Normal file
32
crates/ruff_python_formatter/resources/test/fixtures/ruff/trivia.py
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
|
||||
# Removes the line above
|
||||
|
||||
a = 10 # Keeps the line above
|
||||
|
||||
# Separated by one line from `a` and `b`
|
||||
|
||||
b = 20
|
||||
# Adds two lines after `b`
|
||||
class Test:
|
||||
def a(self):
|
||||
pass
|
||||
# trailing comment
|
||||
|
||||
# two lines before, one line after
|
||||
|
||||
c = 30
|
||||
|
||||
while a == 10:
|
||||
...
|
||||
|
||||
# trailing comment with one line before
|
||||
|
||||
# one line before this leading comment
|
||||
|
||||
d = 40
|
||||
|
||||
while b == 20:
|
||||
...
|
||||
# no empty line before
|
||||
|
||||
e = 50 # one empty line before
|
Loading…
Add table
Add a link
Reference in a new issue