diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index e0a83f60..bf917fcf 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -126,6 +126,10 @@ export default { if (!path.node.children.QuestionMark) { return isInParentheses ? binaryExpression : group(binaryExpression); } + const isInReturn = grandparentNodeName === "returnStatement"; + const prefix = group( + isInReturn ? indent(binaryExpression) : binaryExpression + ); const [consequent, alternate] = map(path, print, "expression"); const suffix = [ line, @@ -139,9 +143,9 @@ export default { ? suffix : align(Math.max(0, options.tabWidth - 2), suffix); if (isNestedTernary) { - return [group(binaryExpression), alignedSuffix]; + return [prefix, alignedSuffix]; } - const parts = [group(binaryExpression), indent(alignedSuffix)]; + const parts = [prefix, indent(alignedSuffix)]; return isInParentheses ? parts : group(parts); }, 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 f5aaf520..3d18056e 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 @@ -10,6 +10,14 @@ int ternaryOperationThatShouldBreak2() { return thisIsAVeryLongInteger ? thisIsAnotherVeryLongOne : thisIsAnotherVeryLongIntegerThatIsEvenLongerThanFirstOne; } + void ternaryOperationThatShouldBreak3() { + aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + var v = aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + v = aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + f(aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh); + return aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + } + int ternaryOperationThatShouldNotBreak() { int a = b ? b : c; return b ? b : c; 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 44da4d1d..d4e6d269 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 @@ -19,6 +19,53 @@ int ternaryOperationThatShouldBreak2() { : thisIsAnotherVeryLongIntegerThatIsEvenLongerThanFirstOne; } + void ternaryOperationThatShouldBreak3() { + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + var v = + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + v = + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + f( + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh + ); + return aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + } + int ternaryOperationThatShouldNotBreak() { int a = b ? b : c; return b ? b : c; 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 234a5b09..c3abf583 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 @@ -10,6 +10,14 @@ int ternaryOperationThatShouldBreak2() { return thisIsAVeryLongInteger ? thisIsAnotherVeryLongOne : thisIsAnotherVeryLongIntegerThatIsEvenLongerThanFirstOne; } + void ternaryOperationThatShouldBreak3() { + aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + var v = aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + v = aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + f(aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh); + return aaaaaaaaaa && bbbbbbbbbb && cccccccccc && dddddddddd && eeeeeeeeee && ffffffffff ? gggggggggg : hhhhhhhhhh; + } + int ternaryOperationThatShouldNotBreak() { int a = b ? b : c; return b ? b : c; 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 43fa4743..05dafa5a 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 @@ -18,6 +18,53 @@ int ternaryOperationThatShouldBreak2() { : thisIsAnotherVeryLongIntegerThatIsEvenLongerThanFirstOne; } + void ternaryOperationThatShouldBreak3() { + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + var v = + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + v = + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + f( + aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh + ); + return aaaaaaaaaa && + bbbbbbbbbb && + cccccccccc && + dddddddddd && + eeeeeeeeee && + ffffffffff + ? gggggggggg + : hhhhhhhhhh; + } + int ternaryOperationThatShouldNotBreak() { int a = b ? b : c; return b ? b : c;