From d1fe9b71efe1d1100a20c377c32c726d509f3bb4 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 27 Oct 2014 12:26:25 +0400 Subject: [PATCH] Make line break before '}' optional #KT-6142 Fixed --- .../plugin/formatter/kotlinSpacingRules.kt | 3 +- .../EmptyLineBetweenEnumEntries.after.kt | 6 ++-- .../formatter/NewLineForRBrace.after.kt | 34 +++++++++++++++++++ idea/testData/formatter/NewLineForRBrace.kt | 27 +++++++++++++++ .../formatter/JetFormatterTestGenerated.java | 6 ++++ 5 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 idea/testData/formatter/NewLineForRBrace.after.kt create mode 100644 idea/testData/formatter/NewLineForRBrace.kt diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt index 09b73724791..a179621eb8b 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/jet/plugin/formatter/kotlinSpacingRules.kt @@ -290,11 +290,12 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { Spacing.createSpacing(numSpaces, numSpaces, 0, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE) } + + inPosition(parent = CLASS_BODY, right = RBRACE).lineBreakIfLineBreakInParent(numSpacesOtherwise = 1) } simple { afterInside(LBRACE, BLOCK).lineBreakInCode() - beforeInside(RBRACE, CLASS_BODY).lineBreakInCode() beforeInside(RBRACE, BLOCK).lineBreakInCode() beforeInside(RBRACE, WHEN).lineBreakInCode() between(RPAR, BODY).spaces(1) diff --git a/idea/testData/formatter/EmptyLineBetweenEnumEntries.after.kt b/idea/testData/formatter/EmptyLineBetweenEnumEntries.after.kt index e4bf2fbf7d6..4f247fb1b5f 100644 --- a/idea/testData/formatter/EmptyLineBetweenEnumEntries.after.kt +++ b/idea/testData/formatter/EmptyLineBetweenEnumEntries.after.kt @@ -1,5 +1,4 @@ -enum class E1 { F S T -} +enum class E1 { F S T } enum class E2 { F S T @@ -15,8 +14,7 @@ enum class E4 { S T } -enum class E5 { F S {} T -} +enum class E5 { F S {} T } enum class E6 { F S T {} diff --git a/idea/testData/formatter/NewLineForRBrace.after.kt b/idea/testData/formatter/NewLineForRBrace.after.kt new file mode 100644 index 00000000000..cc3441309fd --- /dev/null +++ b/idea/testData/formatter/NewLineForRBrace.after.kt @@ -0,0 +1,34 @@ +enum class E1 { F S T } + +enum class E2 { F S T } + +enum class E3 { + F S T +} + +class C1 {} + +class C2 { + fun test() { + } +} + +object O1 {} + +object O2 { + fun test() { + } +} + +trait T1 {} + +trait T2 { + val some = 1 +} + +enum class E1 { + EE1 {} + EE2 { + val some = 1 + } +} diff --git a/idea/testData/formatter/NewLineForRBrace.kt b/idea/testData/formatter/NewLineForRBrace.kt new file mode 100644 index 00000000000..757c1d00282 --- /dev/null +++ b/idea/testData/formatter/NewLineForRBrace.kt @@ -0,0 +1,27 @@ +enum class E1 { F S T } + +enum class E2 { F S T} + +enum class E3 { + F S T} + +class C1 {} + +class C2 { + fun test() {}} + +object O1 {} + +object O2 { + fun test() {}} + +trait T1 {} + +trait T2 { + val some = 1} + +enum class E1 { + EE1 {} + EE2 { + val some = 1} +} diff --git a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java index 634a812eec8..a7379f60759 100644 --- a/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/formatter/JetFormatterTestGenerated.java @@ -328,6 +328,12 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTest(fileName); } + @TestMetadata("NewLineForRBrace.after.kt") + public void testNewLineForRBrace() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/NewLineForRBrace.after.kt"); + doTest(fileName); + } + @TestMetadata("Parameters.after.kt") public void testParameters() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/Parameters.after.kt");