From da4e601745103b9ec6d219ac0061134edba9d429 Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Tue, 14 Oct 2025 23:16:41 -0600 Subject: [PATCH] fix: remove extra indent from ternary/lambda expressions in parentheses --- packages/prettier-plugin-java/src/printers/expressions.ts | 7 ++++++- .../unit-test/conditional-expression/spaces/_input.java | 4 ++++ .../unit-test/conditional-expression/spaces/_output.java | 6 ++++++ .../test/unit-test/conditional-expression/tabs/_input.java | 4 ++++ .../unit-test/conditional-expression/tabs/_output.java | 6 ++++++ .../prettier-plugin-java/test/unit-test/lambda/_input.java | 4 ++++ .../test/unit-test/lambda/_output.java | 5 +++++ 7 files changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index 341f504b..b14c1eb0 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -374,13 +374,18 @@ export default { const expression = call(path, print, "expression"); const ancestorName = (path.getNode(14) as JavaNonTerminal | null)?.name; const binaryExpression = path.getNode(8) as JavaNonTerminal | null; + const { conditionalExpression, lambdaExpression } = + path.node.children.expression[0].children; + const hasLambda = lambdaExpression !== undefined; + const hasTernary = + conditionalExpression?.[0].children.QuestionMark !== undefined; return ancestorName && ["guard", "returnStatement"].includes(ancestorName) && binaryExpression && binaryExpression.name === "binaryExpression" && Object.keys(binaryExpression.children).length === 1 ? indentInParentheses(expression) - : ["(", indent(expression), ")"]; + : ["(", hasLambda || hasTernary ? expression : indent(expression), ")"]; }, castExpression: printSingle, diff --git a/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_input.java b/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_input.java index cb46abda..3c9f5ab5 100644 --- a/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_input.java @@ -38,4 +38,8 @@ void ternaryWithComments() { ? b // b : c; // c } + + void ternaryInParentheses() { + (aaaaaaaaaa ? bbbbbbbbbb : cccccccccc.dddddddddd().eeeeeeeeee().ffffffffff()); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_output.java b/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_output.java index 237586b7..4c8fdd27 100644 --- a/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/conditional-expression/spaces/_output.java @@ -53,4 +53,10 @@ void ternaryWithComments() { ? b // b : c; // c } + + void ternaryInParentheses() { + (aaaaaaaaaa + ? bbbbbbbbbb + : cccccccccc.dddddddddd().eeeeeeeeee().ffffffffff()); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_input.java b/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_input.java index 7bab26b2..bedcb29f 100644 --- a/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_input.java @@ -38,4 +38,8 @@ void ternaryWithComments() { ? b // b : c; // c } + + void ternaryInParentheses() { + (aaaaaaaaaa ? bbbbbbbbbb : cccccccccc.dddddddddd().eeeeeeeeee().ffffffffff()); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_output.java b/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_output.java index 147b9578..19697faa 100644 --- a/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/conditional-expression/tabs/_output.java @@ -52,4 +52,10 @@ void ternaryWithComments() { ? b // b : c; // c } + + void ternaryInParentheses() { + (aaaaaaaaaa + ? bbbbbbbbbb + : cccccccccc.dddddddddd().eeeeeeeeee().ffffffffff()); + } } 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 b5751e3d..e00ad9a0 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_input.java @@ -333,6 +333,10 @@ void lambdaWithTrailingComments() { ).collect(Collectors.summingInt(v -> v)) ); } + + void lambdaInParentheses() { + (aaaaaaaaaa -> bbbbbbbbbb.cccccccccc().dddddddddd().eeeeeeeeee().ffffffffff()); + } } class T { 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 523bd8fe..a1c54630 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_output.java @@ -576,6 +576,11 @@ void lambdaWithTrailingComments() { .collect(Collectors.summingInt(v -> v)) ); } + + void lambdaInParentheses() { + (aaaaaaaaaa -> + bbbbbbbbbb.cccccccccc().dddddddddd().eeeeeeeeee().ffffffffff()); + } } class T {