diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinPreFormatProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinPreFormatProcessor.kt index 0e4fd680053..bbf47c392ca 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinPreFormatProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinPreFormatProcessor.kt @@ -68,8 +68,15 @@ private class Visitor(var range: TextRange) : KtTreeVisitorVoid() { if (lastEntry == null && classBody.containsToken(KtTokens.SEMICOLON)) return val semicolon = psiFactory.createSemicolon() - classBody.addAfter(semicolon, lastEntry) - delta += semicolon.textLength + delta += if (lastEntry != null) { + classBody.addAfter(semicolon, lastEntry) + semicolon.textLength + } else { + val newLine = psiFactory.createNewLine() + classBody.addAfter(semicolon, classBody.lBrace) + classBody.addAfter(psiFactory.createNewLine(), classBody.lBrace) + semicolon.textLength + newLine.textLength + } } range = TextRange(range.startOffset, range.endOffset + delta) diff --git a/idea/testData/codeInsight/overrideImplement/enumClass.kt b/idea/testData/codeInsight/overrideImplement/enumClass.kt new file mode 100644 index 00000000000..d51af681e76 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass.kt @@ -0,0 +1 @@ +enum class Foo \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass.kt.after b/idea/testData/codeInsight/overrideImplement/enumClass.kt.after new file mode 100644 index 00000000000..48c1f9c4513 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass.kt.after @@ -0,0 +1,7 @@ +enum class Foo { + ; + + override fun toString(): String { + return super.toString() + } +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass2.kt b/idea/testData/codeInsight/overrideImplement/enumClass2.kt new file mode 100644 index 00000000000..ed190cf4420 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass2.kt @@ -0,0 +1,2 @@ +enum class Foo { +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass2.kt.after b/idea/testData/codeInsight/overrideImplement/enumClass2.kt.after new file mode 100644 index 00000000000..48c1f9c4513 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass2.kt.after @@ -0,0 +1,7 @@ +enum class Foo { + ; + + override fun toString(): String { + return super.toString() + } +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass3.kt b/idea/testData/codeInsight/overrideImplement/enumClass3.kt new file mode 100644 index 00000000000..c2c7e7cae0a --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass3.kt @@ -0,0 +1,3 @@ +enum class Foo { + A +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass3.kt.after b/idea/testData/codeInsight/overrideImplement/enumClass3.kt.after new file mode 100644 index 00000000000..88f97a67189 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass3.kt.after @@ -0,0 +1,7 @@ +enum class Foo { + A; + + override fun toString(): String { + return super.toString() + } +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass4.kt b/idea/testData/codeInsight/overrideImplement/enumClass4.kt new file mode 100644 index 00000000000..38f95ab2abe --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass4.kt @@ -0,0 +1,3 @@ +enum class Foo { + A; +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/enumClass4.kt.after b/idea/testData/codeInsight/overrideImplement/enumClass4.kt.after new file mode 100644 index 00000000000..88f97a67189 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/enumClass4.kt.after @@ -0,0 +1,7 @@ +enum class Foo { + A; + + override fun toString(): String { + return super.toString() + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt index ecc7ef24700..ac9028b746e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt @@ -313,4 +313,20 @@ class OverrideImplementTest : AbstractOverrideImplementTest() { fun testImplementFromClassName6() { doMultiImplementFileTest() } + + fun testEnumClass() { + doOverrideFileTest("toString") + } + + fun testEnumClass2() { + doOverrideFileTest("toString") + } + + fun testEnumClass3() { + doOverrideFileTest("toString") + } + + fun testEnumClass4() { + doOverrideFileTest("toString") + } }