From e91caea4906d28b6cb61e2dadcc9cf25890b0561 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Fri, 11 Aug 2023 14:28:48 -0400 Subject: [PATCH] Add test case for walrus operators in return types (#6438) ## Summary Closes https://github.com/astral-sh/ruff/issues/6437. ## Test Plan `cargo test` --- .../test/fixtures/ruff/statement/function.py | 5 +++++ .../src/expression/expr_named_expr.rs | 1 + .../snapshots/format@statement__function.py.snap | 14 ++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/function.py b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/function.py index 42e643032c..e5a32ad888 100644 --- a/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/function.py +++ b/crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/function.py @@ -371,3 +371,8 @@ def f( # first # third ): ... + +# Walrus operator in return type. +def this_is_unusual() -> (please := no): ... + +def this_is_unusual(x) -> (please := no): ... diff --git a/crates/ruff_python_formatter/src/expression/expr_named_expr.rs b/crates/ruff_python_formatter/src/expression/expr_named_expr.rs index 935d926c30..8858c6079a 100644 --- a/crates/ruff_python_formatter/src/expression/expr_named_expr.rs +++ b/crates/ruff_python_formatter/src/expression/expr_named_expr.rs @@ -49,6 +49,7 @@ impl NeedsParentheses for ExprNamedExpr { || parent.is_expr_await() || parent.is_stmt_delete() || parent.is_stmt_for() + || parent.is_stmt_function_def() { OptionalParentheses::Always } else { diff --git a/crates/ruff_python_formatter/tests/snapshots/format@statement__function.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@statement__function.py.snap index 8fba525759..d801c863eb 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@statement__function.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@statement__function.py.snap @@ -377,6 +377,11 @@ def f( # first # third ): ... + +# Walrus operator in return type. +def this_is_unusual() -> (please := no): ... + +def this_is_unusual(x) -> (please := no): ... ``` ## Output @@ -905,6 +910,15 @@ def f( # first /, # second ): ... + + +# Walrus operator in return type. +def this_is_unusual() -> (please := no): + ... + + +def this_is_unusual(x) -> (please := no): + ... ```