diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java index 1596c605d986..b5f6a114f7a0 100644 --- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterMultilineMethodCallParamsTest.java @@ -126,6 +126,35 @@ public class JavaFormatterMultilineMethodCallParamsTest extends AbstractJavaForm ");\n" ); } + + public void testMethodBracketsAlignment() { + getSettings().ALIGN_MULTILINE_METHOD_BRACKETS = true; + doTextTest( + "public class Foo {\n" + + " private IntPredicate example1() {\n" + + " return Boo.combine(Boo.p1(),\n" + + " Boo.p2());\n" + + " }\n" + + " \n" + + " private boolean example2() {\n" + + " return IntStream.range(0, 4).allMatch(Boo.combine(Boo.p1(),\n" + + " Boo.p2()));\n" + + " }\n" + + "}", + "public class Foo {\n" + + " private IntPredicate example1() {\n" + + " return Boo.combine(Boo.p1(),\n" + + " Boo.p2());\n" + + " }\n" + + "\n" + + " private boolean example2() {\n" + + " return IntStream.range(0, 4).allMatch(Boo.combine(Boo.p1(),\n" + + " Boo.p2()));\n" + + " }\n" + + "}" + ); + } + } diff --git a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java index a725021076e2..fa169c2db3f6 100644 --- a/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java +++ b/platform/lang-impl/src/com/intellij/formatting/FormatProcessor.java @@ -1650,7 +1650,10 @@ public class FormatProcessor { private void restoreAlignments(MultiMap blocks) { for (Alignment alignment : blocks.keySet()) { - Set toRealign = ((AlignmentImpl)alignment).getOffsetResponsibleBlocks(); + AlignmentImpl alignmentImpl = (AlignmentImpl)alignment; + if (!alignmentImpl.isAllowBackwardShift()) continue; + + Set toRealign = alignmentImpl.getOffsetResponsibleBlocks(); arrangeSpaces(toRealign); LeafBlockWrapper rightMostBlock = getRightMostBlock(toRealign);