From 6eec601fa6114045724d05ae5670e543ab7ed40e Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Wed, 24 Jun 2026 23:48:49 -0600 Subject: [PATCH] fix: omit parentheses around lambda body assignment expressions --- src/printers/helpers.ts | 6 +++++- test/unit-test/lambda/arrow-parens-always/_input.java | 4 ++++ test/unit-test/lambda/arrow-parens-always/_output.java | 4 ++++ test/unit-test/lambda/arrow-parens-avoid/_input.java | 4 ++++ test/unit-test/lambda/arrow-parens-avoid/_output.java | 4 ++++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/printers/helpers.ts b/src/printers/helpers.ts index 0892777c..62520417 100644 --- a/src/printers/helpers.ts +++ b/src/printers/helpers.ts @@ -680,7 +680,11 @@ export function needsParentheses(path: NamedNodePath) { return false; } - if (parent?.type === SyntaxType.AssignmentExpression) { + if ( + parent?.type === SyntaxType.AssignmentExpression || + (parent?.type === SyntaxType.LambdaExpression && + parent.bodyNode === node) + ) { return false; } diff --git a/test/unit-test/lambda/arrow-parens-always/_input.java b/test/unit-test/lambda/arrow-parens-always/_input.java index b9ce8237..1113789c 100644 --- a/test/unit-test/lambda/arrow-parens-always/_input.java +++ b/test/unit-test/lambda/arrow-parens-always/_input.java @@ -337,6 +337,10 @@ void lambdaWithTrailingComments() { void lambdaInParentheses() { (aaaaaaaaaa -> bbbbbbbbbb.cccccccccc().dddddddddd().eeeeeeeeee().ffffffffff()); } + + void lambdaWithAssignmentBody() { + a -> b = c; + } } class T { diff --git a/test/unit-test/lambda/arrow-parens-always/_output.java b/test/unit-test/lambda/arrow-parens-always/_output.java index fca16104..28545a8b 100644 --- a/test/unit-test/lambda/arrow-parens-always/_output.java +++ b/test/unit-test/lambda/arrow-parens-always/_output.java @@ -571,6 +571,10 @@ void lambdaInParentheses() { (aaaaaaaaaa) -> bbbbbbbbbb.cccccccccc().dddddddddd().eeeeeeeeee().ffffffffff(); } + + void lambdaWithAssignmentBody() { + (a) -> b = c; + } } class T { diff --git a/test/unit-test/lambda/arrow-parens-avoid/_input.java b/test/unit-test/lambda/arrow-parens-avoid/_input.java index b9ce8237..1113789c 100644 --- a/test/unit-test/lambda/arrow-parens-avoid/_input.java +++ b/test/unit-test/lambda/arrow-parens-avoid/_input.java @@ -337,6 +337,10 @@ void lambdaWithTrailingComments() { void lambdaInParentheses() { (aaaaaaaaaa -> bbbbbbbbbb.cccccccccc().dddddddddd().eeeeeeeeee().ffffffffff()); } + + void lambdaWithAssignmentBody() { + a -> b = c; + } } class T { diff --git a/test/unit-test/lambda/arrow-parens-avoid/_output.java b/test/unit-test/lambda/arrow-parens-avoid/_output.java index cfe2af09..e84e93d6 100644 --- a/test/unit-test/lambda/arrow-parens-avoid/_output.java +++ b/test/unit-test/lambda/arrow-parens-avoid/_output.java @@ -571,6 +571,10 @@ void lambdaInParentheses() { aaaaaaaaaa -> bbbbbbbbbb.cccccccccc().dddddddddd().eeeeeeeeee().ffffffffff(); } + + void lambdaWithAssignmentBody() { + a -> b = c; + } } class T {