From 391d40e79273f556c275bb2d17a73e77ddaa883f Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 14 May 2014 18:37:40 +0400 Subject: [PATCH] Fix error alignment for binary expression parts --- .../jet/plugin/formatter/JetBlock.java | 8 ++++++-- .../BinaryExpressionAlignmentSpread.after.kt | 17 +++++++++++++++++ .../BinaryExpressionAlignmentSpread.kt | 16 ++++++++++++++++ .../formatter/JetFormatterTestGenerated.java | 5 +++++ .../JetTypingIndentationTestBaseGenerated.java | 4 +--- 5 files changed, 45 insertions(+), 5 deletions(-) create mode 100644 idea/testData/formatter/BinaryExpressionAlignmentSpread.after.kt create mode 100644 idea/testData/formatter/BinaryExpressionAlignmentSpread.kt diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java index 77ce41d0b0e..ddb3b781955 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetBlock.java @@ -67,7 +67,7 @@ public class JetBlock extends AbstractBlock { public JetBlock( @NotNull ASTNode node, - NodeAlignmentStrategy alignmentStrategy, + @NotNull NodeAlignmentStrategy alignmentStrategy, Indent indent, Wrap wrap, CodeStyleSettings settings, @@ -233,6 +233,10 @@ public class JetBlock extends AbstractBlock { else if (parentType == WHEN) { return getAlignmentForCaseBranch(jetSettings.ALIGN_IN_COLUMNS_CASE_BRANCH); } + else if (parentType == WHEN_ENTRY) { + // Propagate when alignment for -> + return myAlignmentStrategy; + } else if (BINARY_EXPRESSIONS.contains(parentType) && ALIGN_FOR_BINARY_OPERATIONS.contains(getOperationType(getNode()))) { return NodeAlignmentStrategy.fromTypes(AlignmentStrategy.wrap( createAlignment(jetCommonSettings.ALIGN_MULTILINE_BINARY_OPERATION, getAlignment()))); @@ -264,7 +268,7 @@ public class JetBlock extends AbstractBlock { }; } - return myAlignmentStrategy; + return NodeAlignmentStrategy.getNullStrategy(); } private static NodeAlignmentStrategy getAlignmentForChildInParenthesis( diff --git a/idea/testData/formatter/BinaryExpressionAlignmentSpread.after.kt b/idea/testData/formatter/BinaryExpressionAlignmentSpread.after.kt new file mode 100644 index 00000000000..06699cc3f39 --- /dev/null +++ b/idea/testData/formatter/BinaryExpressionAlignmentSpread.after.kt @@ -0,0 +1,17 @@ +fun some(f: (String) -> Unit) { +} + +fun test() { + 3 + object { + fun foo() { + + } + } + + 2 ?: some { + s -> + val a = 12 + } +} + +// SET_TRUE: ALIGN_MULTILINE_BINARY_OPERATION \ No newline at end of file diff --git a/idea/testData/formatter/BinaryExpressionAlignmentSpread.kt b/idea/testData/formatter/BinaryExpressionAlignmentSpread.kt new file mode 100644 index 00000000000..ca13118db74 --- /dev/null +++ b/idea/testData/formatter/BinaryExpressionAlignmentSpread.kt @@ -0,0 +1,16 @@ +fun some(f: (String) -> Unit) {} + +fun test() { + 3 + object { + fun foo() { + + } + } + + 2 ?: some { + s -> + val a = 12 + } +} + +// SET_TRUE: ALIGN_MULTILINE_BINARY_OPERATION \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java index f4acb883213..a73360c0128 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java @@ -44,6 +44,11 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTest("idea/testData/formatter/ArrayAccess.after.kt"); } + @TestMetadata("BinaryExpressionAlignmentSpread.after.kt") + public void testBinaryExpressionAlignmentSpread() throws Exception { + doTest("idea/testData/formatter/BinaryExpressionAlignmentSpread.after.kt"); + } + @TestMetadata("BinaryExpressions.after.kt") public void testBinaryExpressions() throws Exception { doTest("idea/testData/formatter/BinaryExpressions.after.kt"); diff --git a/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java b/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java index facab36b478..1182ffe4ecd 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetTypingIndentationTestBaseGenerated.java @@ -61,9 +61,7 @@ public class JetTypingIndentationTestBaseGenerated extends AbstractJetTypingInde } public void testAllFilesPresentInDirectSettings() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", - new File("idea/testData/indentationOnNewline"), - Pattern.compile("^([^\\.]+)\\.after\\.kt.*$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/indentationOnNewline"), Pattern.compile("^([^\\.]+)\\.after\\.kt.*$"), true); } @TestMetadata("AssignmentAfterEq.after.kt")