diff --git a/packages/prettier-plugin-java/package.json b/packages/prettier-plugin-java/package.json index a89cc2c7..e9c33526 100644 --- a/packages/prettier-plugin-java/package.json +++ b/packages/prettier-plugin-java/package.json @@ -1,6 +1,6 @@ { "name": "prettier-plugin-java", - "version": "2.8.0", + "version": "2.8.1", "description": "Prettier Java Plugin", "type": "module", "exports": { 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; diff --git a/website/yarn.lock b/website/yarn.lock index bbf39ebe..05788a05 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -7200,9 +7200,9 @@ pupa@^3.1.0: escape-goat "^4.0.0" qs@~6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + version "6.14.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.1.tgz#a41d85b9d3902f31d27861790506294881871159" + integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ== dependencies: side-channel "^1.1.0"