From 3f8ffb5ea705909c027a9dfa9cd34c4eecfbb997 Mon Sep 17 00:00:00 2001 From: Sinan Kozak Date: Wed, 25 Mar 2020 19:58:43 +0300 Subject: [PATCH] KT-24750 Blank line after class header formatter should use user setting --- .../idea/formatter/kotlinSpacingRules.kt | 9 ++- .../BlankLinesAfterClassHeader.after.kt | 24 +++++++ .../formatter/BlankLinesAfterClassHeader.kt | 15 +++++ .../BlankLinesAfterClassHeader2.after.kt | 67 +++++++++++++++++++ .../formatter/BlankLinesAfterClassHeader2.kt | 45 +++++++++++++ .../formatter/FormatterTestGenerated.java | 5 ++ 6 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 idea/testData/formatter/BlankLinesAfterClassHeader2.after.kt create mode 100644 idea/testData/formatter/BlankLinesAfterClassHeader2.kt 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 755ceecc549..3b9863243ba 100644 --- a/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/formatter/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -153,13 +153,16 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing null } else { val minLineFeeds = if (right.requireNode().elementType == FUN || right.requireNode().elementType == PROPERTY) - 1 + kotlinCommonSettings.BLANK_LINES_AFTER_CLASS_HEADER + 1 else 0 builderUtil.createLineFeedDependentSpacing( - 1, 1, minLineFeeds, - settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_DECLARATIONS, + 1, + 1, + minLineFeeds, + commonCodeStyleSettings.KEEP_LINE_BREAKS, + commonCodeStyleSettings.KEEP_BLANK_LINES_IN_DECLARATIONS, TextRange(parentPsi.textRange.startOffset, left.requireNode().psi.textRange.startOffset), DependentSpacingRule(DependentSpacingRule.Trigger.HAS_LINE_FEEDS) .registerData( diff --git a/idea/testData/formatter/BlankLinesAfterClassHeader.after.kt b/idea/testData/formatter/BlankLinesAfterClassHeader.after.kt index d0575c00b7d..62634f01750 100644 --- a/idea/testData/formatter/BlankLinesAfterClassHeader.after.kt +++ b/idea/testData/formatter/BlankLinesAfterClassHeader.after.kt @@ -1,23 +1,46 @@ class Foo { + fun bar() { } } object Bar { + fun xyzzy() { } } +object BarS { + + fun xyzzy() {} +} + val f = object { fun foo() {} } +class FooCO { + + fun bar() { + } + + companion object { + + fun foo() {} + } +} + class FooM : IFoo { fun bar() } +class FooN : IFoo { + + fun bar() +} + class FooC( val x: String ) { @@ -28,6 +51,7 @@ class FooC( enum class Foo { Bar, Baz } class Foo { + fun bar() {} } diff --git a/idea/testData/formatter/BlankLinesAfterClassHeader.kt b/idea/testData/formatter/BlankLinesAfterClassHeader.kt index c1335358be0..053c5deab37 100644 --- a/idea/testData/formatter/BlankLinesAfterClassHeader.kt +++ b/idea/testData/formatter/BlankLinesAfterClassHeader.kt @@ -8,15 +8,30 @@ object Bar { } } +object BarS { fun xyzzy() {} } + val f = object { fun foo() {} } +class FooCO { + fun bar() { + } + + companion object { + fun foo() {} + } +} + class FooM : IFoo { fun bar() } +class FooN : IFoo { + fun bar() +} + class FooC( val x: String ) { diff --git a/idea/testData/formatter/BlankLinesAfterClassHeader2.after.kt b/idea/testData/formatter/BlankLinesAfterClassHeader2.after.kt new file mode 100644 index 00000000000..3f5135e6c13 --- /dev/null +++ b/idea/testData/formatter/BlankLinesAfterClassHeader2.after.kt @@ -0,0 +1,67 @@ +class Foo { + + + fun bar() { + } +} + +object Bar { + + + fun xyzzy() { + } +} + +object BarS { + + + fun xyzzy() {} +} + +val f = object { + fun foo() {} +} + +class FooCO { + + + fun bar() { + } + + companion object { + + + fun foo() {} + } +} + +class FooM + : IFoo { + + + fun bar() +} + +class FooN : IFoo { + + + fun bar() +} + +class FooC( + val x: String +) { + + + fun bar() +} + +enum class Foo { Bar, Baz } + +class Foo { + + + fun bar() {} +} + +// SET_INT: BLANK_LINES_AFTER_CLASS_HEADER = 2 diff --git a/idea/testData/formatter/BlankLinesAfterClassHeader2.kt b/idea/testData/formatter/BlankLinesAfterClassHeader2.kt new file mode 100644 index 00000000000..8f9c9715e49 --- /dev/null +++ b/idea/testData/formatter/BlankLinesAfterClassHeader2.kt @@ -0,0 +1,45 @@ +class Foo { + fun bar() { + } +} + +object Bar { + fun xyzzy() { + } +} + +object BarS { fun xyzzy() {} } + +val f = object { + fun foo() {} +} + +class FooCO { + fun bar() { + } + + companion object { + fun foo() {} + } +} + +class FooM + : IFoo { + fun bar() +} + +class FooN : IFoo { + fun bar() +} + +class FooC( + val x: String +) { + fun bar() +} + +enum class Foo{Bar,Baz} + +class Foo{fun bar() {}} + +// SET_INT: BLANK_LINES_AFTER_CLASS_HEADER = 2 diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java index 3b1a059af4c..05da6eb8f2f 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatterTestGenerated.java @@ -95,6 +95,11 @@ public class FormatterTestGenerated extends AbstractFormatterTest { runTest("idea/testData/formatter/BlankLinesAfterClassHeader.after.kt"); } + @TestMetadata("BlankLinesAfterClassHeader2.after.kt") + public void testBlankLinesAfterClassHeader2() throws Exception { + runTest("idea/testData/formatter/BlankLinesAfterClassHeader2.after.kt"); + } + @TestMetadata("BlankLinesBeforeRBrace.after.kt") public void testBlankLinesBeforeRBrace() throws Exception { runTest("idea/testData/formatter/BlankLinesBeforeRBrace.after.kt");