From 14f4c58ae7909d143bcbe90c065bf51fcef33ae5 Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Mon, 8 Sep 2025 02:05:53 -0600 Subject: [PATCH] fix: correct indentation of some method argument lists containing lambda bodies --- .../src/printers/expressions.ts | 10 +++++++--- .../test/unit-test/lambda/_input.java | 14 ++++++++++++++ .../test/unit-test/lambda/_output.java | 14 ++++++++++++++ .../unit-test/template-expression/_output.java | 8 ++++---- 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index 92ffc336..be672343 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -12,6 +12,7 @@ import { each, findBaseIndent, flatMap, + hasLeadingComments, indentInParentheses, isBinaryExpression, isNonTerminal, @@ -276,8 +277,11 @@ export default { }, "primarySuffix" ); + const hasSuffixComments = children.primarySuffix.some(suffix => + hasLeadingComments(suffix) + ); return group( - canBreakForCallExpressions || willBreak(suffixes) + canBreakForCallExpressions || hasSuffixComments ? [prefix, indent(suffixes)] : [prefix, ...suffixes] ); @@ -766,7 +770,7 @@ function printTemplate< const parts = [begin, ...mids, end].map(image => join(hardline, image.split(prefix)) ); - return [ + return indent([ parts[0], ...map( path, @@ -780,5 +784,5 @@ function printTemplate< "embeddedExpression" as IterProperties ), parts.at(-1)! - ]; + ]); } 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 79e674b5..b5751e3d 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_input.java @@ -185,6 +185,16 @@ void singleLambdaWithBlockLastArgumentAndLongArguments() { return f; } ); + + this.a( + aaaaaaaaaaaaaaaaaaaaaaaaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbb, + cccccccccccccccccccccccccc, + dddddddddddddddddddddddddd, + e -> { + return f; + } + ); } void singleLambdaWithBlockLastArgumentAndLongLambdaArgument() { @@ -212,6 +222,10 @@ void argumentAfterLambdaWithBlock() { } void huggableArguments() { + A.b().c(() -> { + return d; + }); + aaaaaaaaaaaaaaaaaaaaaaaa((bbbbbbbbbbbbbbbbbbbbbbbb, cccccccccccccccccccccccc, dddddddddddddddddddddddd) -> eeeeeeeeeeeeeeeeeeeeeeee.ffffffffffffffffffffffff()); a.b(c -> d -> eeeeeeeeee.ffffffffff(gggggggggg, hhhhhhhhhh, iiiiiiiiii, jjjjjjjjjj, kkkkkkkkkk)); 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 9b90eef1..523bd8fe 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_output.java @@ -179,6 +179,16 @@ void singleLambdaWithBlockLastArgumentAndLongArguments() { return f; } ); + + this.a( + aaaaaaaaaaaaaaaaaaaaaaaaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbb, + cccccccccccccccccccccccccc, + dddddddddddddddddddddddddd, + e -> { + return f; + } + ); } void singleLambdaWithBlockLastArgumentAndLongLambdaArgument() { @@ -228,6 +238,10 @@ void argumentAfterLambdaWithBlock() { } void huggableArguments() { + A.b().c(() -> { + return d; + }); + aaaaaaaaaaaaaaaaaaaaaaaa( ( bbbbbbbbbbbbbbbbbbbbbbbb, diff --git a/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java b/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java index 3f27bee8..be291f2c 100644 --- a/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java @@ -7,8 +7,8 @@ class TemplateExpression { String s = STR."You have a \{getOfferType()} waiting for you!"; String msg = STR."The file \{filePath} \{ - file.exists() ? "does" : "does not" - } exist"; + file.exists() ? "does" : "does not" + } exist"; String time = STR."The time is \{ // The java.time.format package is very useful @@ -55,6 +55,6 @@ class TemplateExpression { """; PreparedStatement ps = DB."SELECT * FROM Person p WHERE p.last_name = \{ - name - }"; + name + }"; }