From 26c62e44d5fa32a9849700858c3e707b0e9810e7 Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Sat, 1 Mar 2025 08:50:20 -0700 Subject: [PATCH] fix: break hugged lambda body when closing parenthesis wraps --- .../prettier-plugin-java/src/printers/expressions.ts | 11 ++--------- .../test/unit-test/lambda/_input.java | 2 ++ .../test/unit-test/lambda/_output.java | 6 ++++++ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index 6bec3e23c..d07e93412 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -120,7 +120,7 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter { ctx.Arrow[0], ...(isLambdaBodyABlock ? [" ", lambdaBody] - : [group(indent([line, lambdaBody]))]) + : [group([indent([line, lambdaBody]), params?.hug ? softline : ""])]) ]; if (params?.hug) { return willBreak(lambdaParameters) @@ -649,14 +649,7 @@ export class ExpressionsPrettierVisitor extends BaseCstPrettierPrinter { shouldBreak: true }); } - const suffix = lastExpression?.children.lambdaExpression?.[0].children - .lambdaBody[0].children.block - ? "" - : line; - const hugged = [ - ...headArgs, - group([huggedLastArg, suffix], { shouldBreak: true }) - ]; + const hugged = [...headArgs, group(huggedLastArg, { shouldBreak: true })]; const expanded = group([indent([line, ...headArgs, lastArg]), line], { shouldBreak: true }); diff --git a/packages/prettier-plugin-java/test/unit-test/lambda/_input.java b/packages/prettier-plugin-java/test/unit-test/lambda/_input.java index 1fca347e2..79e674b5c 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_input.java @@ -48,6 +48,8 @@ public void onlyOneMethodInBody() { public void lambdaWithoutBracesWhichBreak() { call(x -> foo.isVeryVeryVeryLongConditionTrue() && foo.isAnotherVeryVeryLongConditionTrue()); + aaaaaaaaaa(bbbbbbbbbb -> "123456789012345678901234567890123456789012345678"); + aaaaaaaaaa(bbbbbbbbbb -> cccccccccc("123456789012345678901234567890123456")); } public void chainCallWithLambda() { diff --git a/packages/prettier-plugin-java/test/unit-test/lambda/_output.java b/packages/prettier-plugin-java/test/unit-test/lambda/_output.java index bda0d7c11..cb1bd434c 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_output.java @@ -51,6 +51,12 @@ public void lambdaWithoutBracesWhichBreak() { foo.isVeryVeryVeryLongConditionTrue() && foo.isAnotherVeryVeryLongConditionTrue() ); + aaaaaaaaaa(bbbbbbbbbb -> + "123456789012345678901234567890123456789012345678" + ); + aaaaaaaaaa(bbbbbbbbbb -> + cccccccccc("123456789012345678901234567890123456") + ); } public void chainCallWithLambda() {