From d23da408a8b827cdd344c96c4bbbcea90520d5b1 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 17 Jul 2015 17:41:11 +0300 Subject: [PATCH] Formatter: Add blank line before class/object declaration inside of declaration body --- .../idea/formatter/kotlinSpacingRules.kt | 3 +- idea/testData/formatter/ClassInBody.after.kt | 28 +++++++++++++++++++ idea/testData/formatter/ClassInBody.kt | 23 +++++++++++++++ idea/testData/formatter/ObjectInBody.after.kt | 28 +++++++++++++++++++ idea/testData/formatter/ObjectInBody.kt | 23 +++++++++++++++ .../formatter/JetFormatterTestGenerated.java | 12 ++++++++ 6 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 idea/testData/formatter/ClassInBody.after.kt create mode 100644 idea/testData/formatter/ClassInBody.kt create mode 100644 idea/testData/formatter/ObjectInBody.after.kt create mode 100644 idea/testData/formatter/ObjectInBody.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt index 803366d1725..79850c27a7e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/kotlinSpacingRules.kt @@ -100,9 +100,10 @@ fun createSpacingBuilder(settings: CodeStyleSettings): KotlinSpacingBuilder { between(ENUM_ENTRY, DECLARATIONS).blankLines(1) beforeInside(FUN, TokenSet.create(BODY, CLASS_BODY)).lineBreakInCode() + beforeInside(CLASS, TokenSet.create(BODY, CLASS_BODY)).lineBreakInCode() + beforeInside(OBJECT_DECLARATION, TokenSet.create(BODY, CLASS_BODY)).lineBreakInCode() before(PROPERTY).lineBreakInCode() - after(DOC_COMMENT).lineBreakInCode() // =============== Spacing ================ diff --git a/idea/testData/formatter/ClassInBody.after.kt b/idea/testData/formatter/ClassInBody.after.kt new file mode 100644 index 00000000000..a0749a18b62 --- /dev/null +++ b/idea/testData/formatter/ClassInBody.after.kt @@ -0,0 +1,28 @@ +class A { // abc + class B +} + +class A { + class B {} +} + +class A { + class B { + + } +} + +fun foo() { + // abc + class B +} + +fun foo() { + class B {} +} + +fun foo() { + class B { + + } +} \ No newline at end of file diff --git a/idea/testData/formatter/ClassInBody.kt b/idea/testData/formatter/ClassInBody.kt new file mode 100644 index 00000000000..ebca482166a --- /dev/null +++ b/idea/testData/formatter/ClassInBody.kt @@ -0,0 +1,23 @@ +class A { // abc + class B +} + +class A { class B {} +} + +class A { class B { + +} +} + +fun foo() { // abc + class B +} + +fun foo() { class B {} +} + +fun foo() { class B { + +} +} \ No newline at end of file diff --git a/idea/testData/formatter/ObjectInBody.after.kt b/idea/testData/formatter/ObjectInBody.after.kt new file mode 100644 index 00000000000..ec40cb88ab1 --- /dev/null +++ b/idea/testData/formatter/ObjectInBody.after.kt @@ -0,0 +1,28 @@ +class A { // abc + object B +} + +class A { + object B {} +} + +class A { + object B { + + } +} + +fun foo() { + // abc + object B +} + +fun foo() { + object B {} +} + +fun foo() { + object B { + + } +} \ No newline at end of file diff --git a/idea/testData/formatter/ObjectInBody.kt b/idea/testData/formatter/ObjectInBody.kt new file mode 100644 index 00000000000..8f55580b79c --- /dev/null +++ b/idea/testData/formatter/ObjectInBody.kt @@ -0,0 +1,23 @@ +class A { // abc + object B +} + +class A { object B {} +} + +class A { object B { + +} +} + +fun foo() { // abc + object B +} + +fun foo() { object B {} +} + +fun foo() { object B { + +} +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/formatter/JetFormatterTestGenerated.java b/idea/tests/org/jetbrains/kotlin/formatter/JetFormatterTestGenerated.java index 1508d97cbb6..161618818f9 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/JetFormatterTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/JetFormatterTestGenerated.java @@ -97,6 +97,12 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTest(fileName); } + @TestMetadata("ClassInBody.after.kt") + public void testClassInBody() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/ClassInBody.after.kt"); + doTest(fileName); + } + @TestMetadata("ClassLineBreak.after.kt") public void testClassLineBreak() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/ClassLineBreak.after.kt"); @@ -355,6 +361,12 @@ public class JetFormatterTestGenerated extends AbstractJetFormatterTest { doTest(fileName); } + @TestMetadata("ObjectInBody.after.kt") + public void testObjectInBody() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/ObjectInBody.after.kt"); + doTest(fileName); + } + @TestMetadata("ParameterDocComments.after.kt") public void testParameterDocComments() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/formatter/ParameterDocComments.after.kt");