From f2e653fc6f93e0e74afa448bfccb130d51a1f80d Mon Sep 17 00:00:00 2001 From: Jordan Kiesel Date: Mon, 8 Sep 2025 02:52:57 -0600 Subject: [PATCH] fix: correct indentation of non-root instanceof expressions --- .../src/printers/expressions.ts | 5 ++++- .../operator-position-end/_input.java | 13 +++++++++++++ .../operator-position-end/_output.java | 13 +++++++++++++ .../operator-position-start/_input.java | 13 +++++++++++++ .../operator-position-start/_output.java | 13 +++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index be6723432..6f1eeba0d 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -684,7 +684,10 @@ function binary( } } level.push(operands.shift()!); - if (!levelOperator || !isAssignmentOperator(levelOperator)) { + if ( + !levelOperator || + (!isAssignmentOperator(levelOperator) && levelOperator !== "instanceof") + ) { return group(level); } if (!isRoot || hasNonAssignmentOperators) { diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java index 94fc575ae..b12cfedb4 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java @@ -132,4 +132,17 @@ void parentheses() { if (aaaaaaaaaa + bbbbbbbbbb == cccccccccc + dddddddddd && eeeeeeeeee + ffffffffff == gggggggggg + hhhhhhhhhh || iiiiiiiiii + jjjjjjjjjj == kkkkkkkkkk + llllllllll && mmmmmmmmmm + nnnnnnnnnn == oooooooooo + pppppppppp || qqqqqqqqqq + rrrrrrrrrr == ssssssssss + tttttttttt && uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) {} } + + void instanceOf() { + var a = + a && + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + } } 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 6877a4b99..17e854fa6 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 @@ -252,4 +252,17 @@ void parentheses() { uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) ) {} } + + void instanceOf() { + var a = + a && + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java index 94fc575ae..b12cfedb4 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java @@ -132,4 +132,17 @@ void parentheses() { if (aaaaaaaaaa + bbbbbbbbbb == cccccccccc + dddddddddd && eeeeeeeeee + ffffffffff == gggggggggg + hhhhhhhhhh || iiiiiiiiii + jjjjjjjjjj == kkkkkkkkkk + llllllllll && mmmmmmmmmm + nnnnnnnnnn == oooooooooo + pppppppppp || qqqqqqqqqq + rrrrrrrrrr == ssssssssss + tttttttttt && uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) {} } + + void instanceOf() { + var a = + a && + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + } } 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 43699f128..fd7ccbd07 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 @@ -245,4 +245,17 @@ void parentheses() { && uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) ) {} } + + void instanceOf() { + var a = + a + && Foo.get(longlinelonglinelonglinelonglinelongline) + instanceof NumberNumberNumberNumber n + && n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) + instanceof NumberNumberNumberNumber n + && n.foo(); + } }