diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt index 7bdc90d956f..fb79ca7b357 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt @@ -61,7 +61,7 @@ public fun PsiElement.getParentOfTypesAndPredicate( ) : T? { var element = if (strict) getParent() else this while (element != null) { - [suppress("UNCHECKED_CAST")] + @suppress("UNCHECKED_CAST") when { (parentClasses.isEmpty() || parentClasses.any {parentClass -> parentClass.isInstance(element)}) && predicate(element!! as T) -> return element as T @@ -96,15 +96,16 @@ inline public fun PsiElement.getChildOfType(): T? { } inline public fun PsiElement.getChildrenOfType(): Array { - return PsiTreeUtil.getChildrenOfType(this, javaClass()) ?: array() + return PsiTreeUtil.getChildrenOfType(this, javaClass()) ?: arrayOf() } -public fun PsiElement.getNextSiblingIgnoringWhitespace(): PsiElement { +public fun PsiElement.getNextSiblingIgnoringWhitespaceAndComments(): PsiElement? { var current = this do { current = current.getNextSibling() + if (current == null) return null } - while (current.getNode().getElementType() == JetTokens.WHITE_SPACE) + while (current is PsiComment || current is PsiWhiteSpace) return current } @@ -130,7 +131,7 @@ public fun JetClassOrObject.effectiveDeclarations(): List = public fun JetClass.isAbstract(): Boolean = isInterface() || hasModifier(JetTokens.ABSTRACT_KEYWORD) -[suppress("UNCHECKED_CAST")] +@suppress("UNCHECKED_CAST") public inline fun PsiElement.replaced(newElement: T): T { val result = replace(newElement) return if (result is T) @@ -139,7 +140,7 @@ public inline fun PsiElement.replaced(newElement: T): T (result as JetParenthesizedExpression).getExpression() as T } -[suppress("UNCHECKED_CAST")] +@suppress("UNCHECKED_CAST") public fun T.copied(): T = copy() as T public fun JetElement.blockExpressionsOrSingle(): Sequence = @@ -182,10 +183,10 @@ public fun StubBasedPsiElementBase(this) { + return sequence(this) { val parentQualified = it.getParent() as? JetQualifiedExpression if (parentQualified?.getSelectorExpression() == it) parentQualified else null }.last() as? JetQualifiedExpression @@ -339,7 +340,7 @@ public fun JetSimpleNameExpression.getReceiverExpression(): JetExpression? { } parent is JetCallExpression -> { //This is in case `a().b()` - val callExpression = (parent as JetCallExpression) + val callExpression = parent val grandParent = callExpression.getParent() if (grandParent is JetQualifiedExpression) { val parentsReceiver = grandParent.getReceiverExpression() @@ -421,7 +422,7 @@ public fun PsiElement.nextLeaf(skipEmptyElements: Boolean = false): PsiElement? public fun PsiElement.prevLeafSkipWhitespacesAndComments(): PsiElement? { var leaf = prevLeaf() while (leaf is PsiWhiteSpace || leaf is PsiComment) { - leaf = leaf!!.prevLeaf() + leaf = leaf.prevLeaf() } return leaf } @@ -429,7 +430,7 @@ public fun PsiElement.prevLeafSkipWhitespacesAndComments(): PsiElement? { public fun PsiElement.prevLeafSkipWhitespaces(): PsiElement? { var leaf = prevLeaf() while (leaf is PsiWhiteSpace) { - leaf = leaf!!.prevLeaf() + leaf = leaf.prevLeaf() } return leaf } @@ -437,7 +438,7 @@ public fun PsiElement.prevLeafSkipWhitespaces(): PsiElement? { public fun PsiElement.nextLeafSkipWhitespacesAndComments(): PsiElement? { var leaf = nextLeaf() while (leaf is PsiWhiteSpace || leaf is PsiComment) { - leaf = leaf!!.nextLeaf() + leaf = leaf.nextLeaf() } return leaf } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java index f0a5a90d207..5ed9d7aac42 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java @@ -565,8 +565,8 @@ public class DeclarationsChecker { next = next.getNextSibling(); } JetDeclaration nextDeclaration = (JetDeclaration) next; - next = PsiUtilPackage.getNextSiblingIgnoringWhitespace(enumEntry); - IElementType nextType = next.getNode().getElementType(); + next = PsiUtilPackage.getNextSiblingIgnoringWhitespaceAndComments(enumEntry); + IElementType nextType = next != null ? next.getNode().getElementType() : null; if (nextDeclaration instanceof JetEnumEntry) { // Not last return nextType != JetTokens.COMMA ? "," : ""; @@ -574,8 +574,8 @@ public class DeclarationsChecker { else { // Last: after it we can have semicolon, just closing brace, or comma followed by semicolon / closing brace if (nextType == JetTokens.COMMA) { - next = PsiUtilPackage.getNextSiblingIgnoringWhitespace(next); - nextType = next.getNode().getElementType(); + next = PsiUtilPackage.getNextSiblingIgnoringWhitespaceAndComments(next); + nextType = next != null ? next.getNode().getElementType() : null; } return nextType != JetTokens.SEMICOLON && nextType != JetTokens.RBRACE ? ";" : ""; } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedEnumEntryDelimiterSyntaxFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedEnumEntryDelimiterSyntaxFix.kt new file mode 100644 index 00000000000..b38a3501c71 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedEnumEntryDelimiterSyntaxFix.kt @@ -0,0 +1,83 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.quickfix + +import com.intellij.codeInsight.intention.IntentionAction +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.diagnostics.Diagnostic +import org.jetbrains.kotlin.idea.quickfix.quickfixUtil.createIntentionFactory +import org.jetbrains.kotlin.idea.quickfix.quickfixUtil.createIntentionForFirstParentOfType +import org.jetbrains.kotlin.lexer.JetTokens +import org.jetbrains.kotlin.psi +import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.getChildOfType +import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType +import org.jetbrains.kotlin.psi.psiUtil.getNextSiblingIgnoringWhitespaceAndComments +import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes +import org.jetbrains.kotlin.resolve.DeclarationsChecker + +class DeprecatedEnumEntryDelimiterSyntaxFix(element: JetEnumEntry): JetIntentionAction(element) { + + override fun getFamilyName(): String = getText() + + override fun getText(): String = "Insert lacking comma(s) / semicolon(s)" + + override fun invoke(project: Project, editor: Editor?, file: JetFile?) = insertLackingCommaSemicolon(element) + + companion object : JetSingleIntentionActionFactory() { + override fun createAction(diagnostic: Diagnostic): IntentionAction? = + diagnostic.createIntentionForFirstParentOfType(::DeprecatedEnumEntryDelimiterSyntaxFix) + + public fun createWholeProjectFixFactory(): JetSingleIntentionActionFactory = createIntentionFactory { + JetWholeProjectForEachElementOfTypeFix.createByPredicate( + predicate = { DeclarationsChecker.enumEntryUsesDeprecatedOrNoDelimiter(it) }, + taskProcessor = { insertLackingCommaSemicolon(it) }, + modalTitle = "Replacing deprecated enum entry delimiter syntax", + name = "Insert lacking comma(s) / semicolon(s) in the whole project", + familyName = "Insert lacking comma(s) / semicolon(s) in the whole project" + ) + } + + private fun insertLackingCommaSemicolon(enumEntry: JetEnumEntry) { + val body = enumEntry.getParent() as JetClassBody + val entries = body.getChildrenOfType() + val psiFactory = JetPsiFactory(body) + for ((entryIndex, entry) in entries.withIndex()) { + var next = entry.getNextSiblingIgnoringWhitespaceAndComments() + var nextType = next?.getNode()?.getElementType() + if (entryIndex < entries.size() - 1) { + if (nextType != JetTokens.COMMA) { + // Classic case like ENUM_ENTRY1 ENUM_ENTRY2 + body.addAfter(psiFactory.createComma(), entry) + } + } + else { + if (nextType == JetTokens.COMMA) { + // ENUM_ENTRY_LAST, fun foo() + next!!.replace(psiFactory.createSemicolon()) + } + else if (nextType != JetTokens.SEMICOLON && nextType != JetTokens.RBRACE) { + // ENUM_ENTRY_LAST fun foo() + body.addAfter(psiFactory.createSemicolon(), entry) + } + } + } + } + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.java index 57d4b3c8d9e..8b896695ef8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.java @@ -328,5 +328,8 @@ public class QuickFixRegistrar { QuickFixes.factories.put(ENUM_ENTRY_USES_DEPRECATED_SUPER_CONSTRUCTOR, DeprecatedEnumEntrySuperConstructorSyntaxFix.Companion); QuickFixes.factories.put(ENUM_ENTRY_USES_DEPRECATED_SUPER_CONSTRUCTOR, DeprecatedEnumEntrySuperConstructorSyntaxFix.Companion.createWholeProjectFixFactory()); + + QuickFixes.factories.put(ENUM_ENTRY_USES_DEPRECATED_OR_NO_DELIMITER, DeprecatedEnumEntryDelimiterSyntaxFix.Companion); + QuickFixes.factories.put(ENUM_ENTRY_USES_DEPRECATED_OR_NO_DELIMITER, DeprecatedEnumEntryDelimiterSyntaxFix.Companion.createWholeProjectFixFactory()); } } diff --git a/idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt b/idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt new file mode 100644 index 00000000000..9fd019fe926 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt @@ -0,0 +1,7 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, + SECOND, + val zzz = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt.after b/idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt.after new file mode 100644 index 00000000000..234381e704e --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt.after @@ -0,0 +1,7 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, + SECOND; + val zzz = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt b/idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt new file mode 100644 index 00000000000..b04dd6a8061 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt @@ -0,0 +1,9 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST SECOND, + THIRD + FOURTH FIFTH SIXTH, + SEVENTH EIGHTH + +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt.after b/idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt.after new file mode 100644 index 00000000000..3cbca1eba0d --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt.after @@ -0,0 +1,9 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, SECOND, + THIRD, + FOURTH, FIFTH, SIXTH, + SEVENTH, EIGHTH + +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noComma.kt b/idea/testData/quickfix/migration/enumDelimiter/noComma.kt new file mode 100644 index 00000000000..42a2ad64cfb --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noComma.kt @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST SECOND + +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noComma.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noComma.kt.after new file mode 100644 index 00000000000..ab5e5d901bb --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noComma.kt.after @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, SECOND + +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt b/idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt new file mode 100644 index 00000000000..8ef0acb1f96 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt @@ -0,0 +1,8 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST + /* The first one */ + SECOND + /* The last one */ +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt.after new file mode 100644 index 00000000000..9db271c5e5e --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt.after @@ -0,0 +1,8 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, + /* The first one */ + SECOND + /* The last one */ +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt b/idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt new file mode 100644 index 00000000000..812d520bb40 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + A B C D E F G H I J + fun foo() = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt.after new file mode 100644 index 00000000000..116f94b835b --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt.after @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + A, B, C, D, E, F, G, H, I, J; + fun foo() = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt new file mode 100644 index 00000000000..9bc5a6b12f3 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt @@ -0,0 +1,8 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum(val z: Int) { + A: MyEnum(3) + B: MyEnum(7) + C: MyEnum(12) + fun foo() = z * 2 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt.after new file mode 100644 index 00000000000..afa76b0e906 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt.after @@ -0,0 +1,8 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum(val z: Int) { + A: MyEnum(3), + B: MyEnum(7), + C: MyEnum(12); + fun foo() = z * 2 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt new file mode 100644 index 00000000000..58c5b976d04 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt @@ -0,0 +1,11 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + A { + override fun foo(): Int = 13 + } + B C { + override fun foo(): Int = 23 + } + open fun foo(): Int = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt.after new file mode 100644 index 00000000000..3ef441c6f9b --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt.after @@ -0,0 +1,11 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + A { + override fun foo(): Int = 13 + }, + B, C { + override fun foo(): Int = 23 + }; + open fun foo(): Int = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt new file mode 100644 index 00000000000..403ee676261 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum(val z: Int) { + A(3) B(7) C(12) + fun foo() = z * 2 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt.after new file mode 100644 index 00000000000..ca22714ef73 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt.after @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum(val z: Int) { + A(3), B(7), C(12); + fun foo() = z * 2 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt b/idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt new file mode 100644 index 00000000000..2dc1793e758 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, SECOND + val zzz = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt.after new file mode 100644 index 00000000000..b70278c6463 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt.after @@ -0,0 +1,6 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, SECOND; + val zzz = 42 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt b/idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt new file mode 100644 index 00000000000..e6db561f7ce --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt @@ -0,0 +1,7 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, SECOND + /* The last one*/ + fun foo() = 1 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt.after b/idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt.after new file mode 100644 index 00000000000..bf80840adc3 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt.after @@ -0,0 +1,7 @@ +// "Insert lacking comma(s) / semicolon(s)" "true" + +enum class MyEnum { + FIRST, SECOND; + /* The last one*/ + fun foo() = 1 +} \ No newline at end of file diff --git a/idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt b/idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt new file mode 100644 index 00000000000..5712b712499 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt @@ -0,0 +1,22 @@ +// "Insert lacking comma(s) / semicolon(s) in the whole project" "true" + +enum class First { + RED GREEN, + BLUE +} + +enum class Second(val code: Int) { + NORTH(2) SOUTH(4), + EAST(6) WEST(8) +} + +enum class Third { + OK { + override fun diag(): String = "OK" + } + ERROR { + override fun diag(): String = "Failed" + } + + open fun diag(): String = "" +} diff --git a/idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt.after b/idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt.after new file mode 100644 index 00000000000..55fe1081887 --- /dev/null +++ b/idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt.after @@ -0,0 +1,22 @@ +// "Insert lacking comma(s) / semicolon(s) in the whole project" "true" + +enum class First { + RED, GREEN, + BLUE +} + +enum class Second(val code: Int) { + NORTH(2), SOUTH(4), + EAST(6), WEST(8) +} + +enum class Third { + OK { + override fun diag(): String = "OK" + }, + ERROR { + override fun diag(): String = "Failed" + }; + + open fun diag(): String = "" +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 4d4157ea9fa..1621dc75e32 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -3082,6 +3082,81 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { } } + @TestMetadata("idea/testData/quickfix/migration/enumDelimiter") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class EnumDelimiter extends AbstractQuickFixTest { + public void testAllFilesPresentInEnumDelimiter() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/migration/enumDelimiter"), Pattern.compile("^(\\w+)\\.kt$"), true); + } + + @TestMetadata("commaNoSemicolon.kt") + public void testCommaNoSemicolon() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/commaNoSemicolon.kt"); + doTest(fileName); + } + + @TestMetadata("missedCommas.kt") + public void testMissedCommas() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/missedCommas.kt"); + doTest(fileName); + } + + @TestMetadata("noComma.kt") + public void testNoComma() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noComma.kt"); + doTest(fileName); + } + + @TestMetadata("noCommaComment.kt") + public void testNoCommaComment() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noCommaComment.kt"); + doTest(fileName); + } + + @TestMetadata("noDelimiter.kt") + public void testNoDelimiter() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noDelimiter.kt"); + doTest(fileName); + } + + @TestMetadata("noDelimiterWithInitializer.kt") + public void testNoDelimiterWithInitializer() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithInitializer.kt"); + doTest(fileName); + } + + @TestMetadata("noDelimiterWithOverload.kt") + public void testNoDelimiterWithOverload() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithOverload.kt"); + doTest(fileName); + } + + @TestMetadata("noDelimiterWithShortConstructor.kt") + public void testNoDelimiterWithShortConstructor() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noDelimiterWithShortConstructor.kt"); + doTest(fileName); + } + + @TestMetadata("noSemicolon.kt") + public void testNoSemicolon() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noSemicolon.kt"); + doTest(fileName); + } + + @TestMetadata("noSemicolonComment.kt") + public void testNoSemicolonComment() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/noSemicolonComment.kt"); + doTest(fileName); + } + + @TestMetadata("wholeProject.kt") + public void testWholeProject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/enumDelimiter/wholeProject.kt"); + doTest(fileName); + } + } + @TestMetadata("idea/testData/quickfix/migration/lambdaSyntax") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)