From 748e458ad757b5b43711c1a3f86d229708a423c8 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Thu, 12 Sep 2019 19:20:28 +0900 Subject: [PATCH] "Override members": add semicolon between enum entry and function #KT-31139 Fixed --- .../idea/formatter/KotlinPreFormatProcessor.kt | 11 +++++++++-- .../codeInsight/overrideImplement/enumClass.kt | 1 + .../overrideImplement/enumClass.kt.after | 7 +++++++ .../codeInsight/overrideImplement/enumClass2.kt | 2 ++ .../overrideImplement/enumClass2.kt.after | 7 +++++++ .../codeInsight/overrideImplement/enumClass3.kt | 3 +++ .../overrideImplement/enumClass3.kt.after | 7 +++++++ .../codeInsight/overrideImplement/enumClass4.kt | 3 +++ .../overrideImplement/enumClass4.kt.after | 7 +++++++ .../idea/codeInsight/OverrideImplementTest.kt | 16 ++++++++++++++++ 10 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass.kt create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass.kt.after create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass2.kt create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass2.kt.after create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass3.kt create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass3.kt.after create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass4.kt create mode 100644 idea/testData/codeInsight/overrideImplement/enumClass4.kt.after 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") + } }