From fec6fc2faba98751eca72729032c867fd8523f00 Mon Sep 17 00:00:00 2001 From: Micha Reiser Date: Tue, 22 Aug 2023 11:50:28 +0200 Subject: [PATCH] Preserve empty lines between try clause headers (#6759) --- .../test/fixtures/ruff/statement/try.py | 20 ++++++++++ .../src/statement/stmt_try.rs | 8 ++-- .../snapshots/format@statement__try.py.snap | 40 +++++++++++++++++++ 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/try.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/try.py index 8d9d080462..bb61b909a2 100644 --- a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/try.py +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/try.py @@ -146,3 +146,23 @@ except ( # comment ): pass + + +try: + pass + +finally: + pass + + +try: + pass + +except ZeroDivisonError: + pass + +else: + pass + +finally: + pass diff --git a/crates/ruff_python_formatter/src/statement/stmt_try.rs b/crates/ruff_python_formatter/src/statement/stmt_try.rs index 3c98d5531e..cfae87be7d 100644 --- a/crates/ruff_python_formatter/src/statement/stmt_try.rs +++ b/crates/ruff_python_formatter/src/statement/stmt_try.rs @@ -105,9 +105,9 @@ impl FormatNodeRule for FormatStmtTry { } fn format_case<'a>( - try_statement: &StmtTry, + try_statement: &'a StmtTry, kind: CaseKind, - previous_node: Option<&Stmt>, + previous_node: Option<&'a Stmt>, dangling_comments: &'a [SourceComment], f: &mut PyFormatter, ) -> FormatResult<(Option<&'a Stmt>, &'a [SourceComment])> { @@ -141,9 +141,9 @@ fn format_case<'a>( clause_body(body, trailing_case_comments), ] )?; - (None, rest) + (Some(last), rest) } else { - (None, dangling_comments) + (previous_node, dangling_comments) }) } diff --git a/crates/ruff_python_formatter/tests/snapshots/format@statement__try.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@statement__try.py.snap index a1ebc8aed1..589d8a25e7 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@statement__try.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@statement__try.py.snap @@ -152,6 +152,26 @@ except ( # comment ): pass + + +try: + pass + +finally: + pass + + +try: + pass + +except ZeroDivisonError: + pass + +else: + pass + +finally: + pass ``` ## Output @@ -320,6 +340,26 @@ except ( # comment ): pass + + +try: + pass + +finally: + pass + + +try: + pass + +except ZeroDivisonError: + pass + +else: + pass + +finally: + pass ```