diff --git a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt index 7f15853bf32..a5caeea5aa1 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -98,6 +98,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing inPosition(left = PROPERTY, right = FUN).emptyLinesIfLineBreakInLeft(1) inPosition(left = FUN, right = PROPERTY).emptyLinesIfLineBreakInLeft(1) inPosition(left = SECONDARY_CONSTRUCTOR, right = SECONDARY_CONSTRUCTOR).emptyLinesIfLineBreakInLeft(1) + inPosition(left = TYPEALIAS, right = TYPEALIAS).emptyLinesIfLineBreakInLeft(1) // Case left for alternative constructors inPosition(left = FUN, right = CLASS).emptyLinesIfLineBreakInLeft(1) @@ -179,6 +180,9 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing between(SECONDARY_CONSTRUCTOR, DECLARATIONS).blankLines(1) between(CLASS_INITIALIZER, DECLARATIONS).blankLines(1) + // TYPEALIAS - TYPEALIAS is an exception + between(TYPEALIAS, DECLARATIONS).blankLines(1) + // ENUM_ENTRY - ENUM_ENTRY is exception between(ENUM_ENTRY, DECLARATIONS).blankLines(1) diff --git a/idea/testData/formatter/TypeAliasSpacing.after.kt b/idea/testData/formatter/TypeAliasSpacing.after.kt new file mode 100644 index 00000000000..783de15b31c --- /dev/null +++ b/idea/testData/formatter/TypeAliasSpacing.after.kt @@ -0,0 +1,36 @@ +typealias A = Int +typealias B = Int +// +typealias C = Int + +typealias D = +Int + +// +typealias E = +Int + +typealias F = Int +// +typealias G = Int + +class X +// +typealias H = Int + +object O +// +typealias I = Int + +fun foo() {} +// +fun foo() {} +typealias J = Int + +// +class Y +typealias K = Int + +// +object OO +typealias L = Int \ No newline at end of file diff --git a/idea/testData/formatter/TypeAliasSpacing.kt b/idea/testData/formatter/TypeAliasSpacing.kt new file mode 100644 index 00000000000..8cbf3ece17a --- /dev/null +++ b/idea/testData/formatter/TypeAliasSpacing.kt @@ -0,0 +1,28 @@ +typealias A = Int +typealias B = Int +// +typealias C = Int +typealias D = + Int +// +typealias E = +Int +typealias F = Int +// +typealias G = Int +class X +// +typealias H = Int +object O +// +typealias I = Int +fun foo() {} +// +fun foo() {} +typealias J = Int +// +class Y +typealias K = Int +// +object OO +typealias L = Int \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index 4af2983e2ad..aa4a7f6f12a 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -812,6 +812,12 @@ public class FormatterTestGenerated extends AbstractFormatterTest { doTest(fileName); } + @TestMetadata("TypeAliasSpacing.after.kt") + public void testTypeAliasSpacing() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/TypeAliasSpacing.after.kt"); + doTest(fileName); + } + @TestMetadata("UnnecessarySpacesInParametersLists.after.kt") public void testUnnecessarySpacesInParametersLists() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/formatter/UnnecessarySpacesInParametersLists.after.kt");