From ee50aec7342ab375a105bb318e6501135e859028 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 14 Mar 2016 15:33:26 +0300 Subject: [PATCH] Don't add a blank line between one line class and object (KT-10965) --- .../idea/formatter/kotlinSpacingRules.kt | 6 +- .../EmptyLineAfterObjectDeclaration.after.kt | 59 +++++++++++++++++-- .../EmptyLineAfterObjectDeclaration.kt | 50 ++++++++++++++++ 3 files changed, 110 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt index a64f7673dd5..e203db22616 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -54,6 +54,9 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { custom { inPosition(left = CLASS, right = CLASS).emptyLinesIfLineBreakInLeft(1) + inPosition(left = CLASS, right = OBJECT_DECLARATION).emptyLinesIfLineBreakInLeft(1) + inPosition(left = OBJECT_DECLARATION, right = OBJECT_DECLARATION).emptyLinesIfLineBreakInLeft(1) + inPosition(left = OBJECT_DECLARATION, right = CLASS).emptyLinesIfLineBreakInLeft(1) inPosition(left = FUN, right = FUN).emptyLinesIfLineBreakInLeft(1) inPosition(left = PROPERTY, right = FUN).emptyLinesIfLineBreakInLeft(1) inPosition(left = FUN, right = PROPERTY).emptyLinesIfLineBreakInLeft(1) @@ -95,7 +98,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { before(DOC_COMMENT).lineBreakInCode() between(PROPERTY, PROPERTY).lineBreakInCode() - // CLASS - CLASS is exception + // CLASS - CLASS, CLASS - OBJECT_DECLARATION are exception between(CLASS, DECLARATIONS).blankLines(1) // FUN - FUN, FUN - PROPERTY, FUN - CLASS are exceptions @@ -104,6 +107,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { // PROPERTY - PROPERTY, PROPERTY - FUN are exceptions between(PROPERTY, DECLARATIONS).blankLines(1) + // OBJECT_DECLARATION - OBJECT_DECLARATION, CLASS - OBJECT_DECLARATION are exception between(OBJECT_DECLARATION, DECLARATIONS).blankLines(1) between(SECONDARY_CONSTRUCTOR, DECLARATIONS).blankLines(1) between(CLASS_INITIALIZER, DECLARATIONS).blankLines(1) diff --git a/idea/testData/formatter/EmptyLineAfterObjectDeclaration.after.kt b/idea/testData/formatter/EmptyLineAfterObjectDeclaration.after.kt index cbe418b2a60..ec106066a96 100644 --- a/idea/testData/formatter/EmptyLineAfterObjectDeclaration.after.kt +++ b/idea/testData/formatter/EmptyLineAfterObjectDeclaration.after.kt @@ -1,7 +1,12 @@ object O1 - object O2 +// ----- +object O1M { +} + +object O2M + // ----- object O3 @@ -17,17 +22,29 @@ val p1 = 1 // ----- object O5 - class C1 // ----- -object O6 +object O5M { +} +class C1M + +// ----- + +object O6 interface T1 // ----- +object O6M { +} + +interface T1M + +// ----- + enum class E1 { ENTRY; @@ -37,6 +54,12 @@ enum class E1 { // ----- object O8 {} +object O9 + +// ----- + +object O8 { +} object O9 @@ -55,12 +78,24 @@ val p2 = 1 // ----- object O12 {} - class C2 // ----- +object O12M { +} + +class C2M + +// ----- + object O13 {} +interface T2 + +// ----- + +object O14 { +} interface T2 @@ -115,3 +150,19 @@ enum class E3 { object O21 { } } + +// ----- + +sealed class C4 { + class C5 : C4() + object O22 : C4() +} + +// ----- + +sealed class C6 { + class C7 : C6() { + } + + object O23 : C6() +} diff --git a/idea/testData/formatter/EmptyLineAfterObjectDeclaration.kt b/idea/testData/formatter/EmptyLineAfterObjectDeclaration.kt index b77b5d4e5da..57af260ab95 100644 --- a/idea/testData/formatter/EmptyLineAfterObjectDeclaration.kt +++ b/idea/testData/formatter/EmptyLineAfterObjectDeclaration.kt @@ -1,6 +1,11 @@ object O1 object O2 +// ----- +object O1M { +} +object O2M + // ----- object O3 @@ -18,11 +23,23 @@ class C1 // ----- +object O5M { +} +class C1M + +// ----- + object O6 interface T1 // ----- +object O6M { +} +interface T1M + +// ----- + enum class E1 { ENTRY; object O7 @@ -35,6 +52,12 @@ object O9 // ----- +object O8 { +} +object O9 + +// ----- + object O10 {} fun f2() = 1 @@ -50,11 +73,23 @@ class C2 // ----- +object O12M { +} +class C2M + +// ----- + object O13 {} interface T2 // ----- +object O14 { +} +interface T2 + +// ----- + enum class E2 { ENTRY; object O14 {} @@ -97,3 +132,18 @@ enum class E3 { object O21 { } } + +// ----- + +sealed class C4 { + class C5 : C4() + object O22 : C4() +} + +// ----- + +sealed class C6 { + class C7 : C6() { + } + object O23 : C6() +}