From 3370121515d6b1c246f9ba3532a7e84cbed29dc3 Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Mon, 8 Sep 2025 23:35:35 -0600 Subject: [PATCH] fix: indent binary expressions in annotation element value or argument lists --- .../prettier-plugin-java/src/printers/expressions.ts | 10 +++++++++- .../operator-position-end/_output.java | 4 ++-- .../operator-position-start/_output.java | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index 6f1eeba0..0c44518e 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -167,8 +167,12 @@ export default { (operators.length > 0 && !children.AssignmentOperator) || (children.expression !== undefined && isBinaryExpression(children.expression[0])); + const isInList = + (path.getNode(4) as JavaNonTerminal | null)?.name === "elementValue" || + (path.getNode(6) as JavaNonTerminal | null)?.name === "argumentList"; return binary(operands, operators, { hasNonAssignmentOperators, + isInList, isRoot: true, operatorPosition: options.experimentalOperatorPosition }); @@ -627,10 +631,12 @@ function binary( operators: { image: string; doc: Doc }[], { hasNonAssignmentOperators = false, + isInList = false, isRoot = false, operatorPosition }: { hasNonAssignmentOperators?: boolean; + isInList?: boolean; isRoot?: boolean; operatorPosition: "end" | "start"; } @@ -686,7 +692,9 @@ function binary( level.push(operands.shift()!); if ( !levelOperator || - (!isAssignmentOperator(levelOperator) && levelOperator !== "instanceof") + (!isInList && + !isAssignmentOperator(levelOperator) && + levelOperator !== "instanceof") ) { return group(level); } diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java index 17e854fa..7d6bcc53 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java @@ -7,12 +7,12 @@ public void binaryOperation() { @Annotation( "This operation with two very long string should break" + - "in a very nice way" + "in a very nice way" ) public String binaryOperationThatShouldBreak() { System.out.println( "This operation with two very long string should break" + - "in a very nice way" + "in a very nice way" ); return ( "This operation with two very long string should break" + diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java index fd7ccbd0..6c76a9ff 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java @@ -7,12 +7,12 @@ public void binaryOperation() { @Annotation( "This operation with two very long string should break" - + "in a very nice way" + + "in a very nice way" ) public String binaryOperationThatShouldBreak() { System.out.println( "This operation with two very long string should break" - + "in a very nice way" + + "in a very nice way" ); return ( "This operation with two very long string should break"