diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createImpl/CreateActualFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createImpl/CreateActualFix.kt index 9a57da9c3fd..5bfecfcf36c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createImpl/CreateActualFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createImpl/CreateActualFix.kt @@ -156,7 +156,19 @@ class CreateActualClassFix( generateClassOrObject(project, element, actualNeeded = true) }) { - override val elementType = if ((element as? KtClass)?.isInterface() == true) "interface" else "class" + override val elementType = run { + val element = element + when (element) { + is KtObjectDeclaration -> "object" + is KtClass -> when { + element.isInterface() -> "interface" + element.isEnum() -> "enum class" + element.isAnnotation() -> "annotation class" + else -> "class" + } + else -> "class" + } + } } class CreateActualPropertyFix( diff --git a/idea/testData/multiModuleQuickFix/annotation/header/header.kt b/idea/testData/multiModuleQuickFix/annotation/header/header.kt new file mode 100644 index 00000000000..b211ee171a9 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotation/header/header.kt @@ -0,0 +1,3 @@ +// "Create actual annotation class for platform JVM" "true" + +expect annotation class Ann(val x: Int, val y: String) \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/annotation/header/header.kt.after b/idea/testData/multiModuleQuickFix/annotation/header/header.kt.after new file mode 100644 index 00000000000..1cdbdcbdf42 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotation/header/header.kt.after @@ -0,0 +1,3 @@ +// "Create actual annotation class for platform JVM" "true" + +expect annotation class Ann(val x: Int, val y: String) \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/annotation/jvm/Ann.kt b/idea/testData/multiModuleQuickFix/annotation/jvm/Ann.kt new file mode 100644 index 00000000000..4c6108ad4cd --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotation/jvm/Ann.kt @@ -0,0 +1 @@ +// Ann: to be implemented \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/annotation/jvm/Ann.kt.after b/idea/testData/multiModuleQuickFix/annotation/jvm/Ann.kt.after new file mode 100644 index 00000000000..7aa51ef77f2 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/annotation/jvm/Ann.kt.after @@ -0,0 +1,2 @@ +// Ann: to be implemented +actual annotation class Ann(val x: Int, val y: String) \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/enum/header/header.kt b/idea/testData/multiModuleQuickFix/enum/header/header.kt index 3485ed71243..b0eedecda32 100644 --- a/idea/testData/multiModuleQuickFix/enum/header/header.kt +++ b/idea/testData/multiModuleQuickFix/enum/header/header.kt @@ -1,4 +1,4 @@ -// "Create actual class for platform JS" "true" +// "Create actual enum class for platform JS" "true" expect enum class MyEnum { FIRST, diff --git a/idea/testData/multiModuleQuickFix/enum/header/header.kt.after b/idea/testData/multiModuleQuickFix/enum/header/header.kt.after index 5c6086384a4..f024a22ca02 100644 --- a/idea/testData/multiModuleQuickFix/enum/header/header.kt.after +++ b/idea/testData/multiModuleQuickFix/enum/header/header.kt.after @@ -1,4 +1,4 @@ -// "Create actual class for platform JS" "true" +// "Create actual enum class for platform JS" "true" expect enum class MyEnum { FIRST, diff --git a/idea/testData/multiModuleQuickFix/object/header/header.kt b/idea/testData/multiModuleQuickFix/object/header/header.kt index b1340b91b65..524e63e0ab8 100644 --- a/idea/testData/multiModuleQuickFix/object/header/header.kt +++ b/idea/testData/multiModuleQuickFix/object/header/header.kt @@ -1,4 +1,4 @@ -// "Create actual class for platform JVM" "true" +// "Create actual object for platform JVM" "true" expect object Object { fun foo(): String diff --git a/idea/testData/multiModuleQuickFix/object/header/header.kt.after b/idea/testData/multiModuleQuickFix/object/header/header.kt.after index cad6cc046e1..1fee946133e 100644 --- a/idea/testData/multiModuleQuickFix/object/header/header.kt.after +++ b/idea/testData/multiModuleQuickFix/object/header/header.kt.after @@ -1,4 +1,4 @@ -// "Create actual class for platform JVM" "true" +// "Create actual object for platform JVM" "true" expect object Object { fun foo(): String diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt index e1a8960d49b..faeffaf1b56 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt @@ -49,6 +49,11 @@ class QuickFixMultiModuleTest : AbstractQuickFixMultiModuleTest() { doMultiPlatformTest(impls = "js" to TargetPlatformKind.JavaScript) } + @Test + fun testAnnotation() { + doMultiPlatformTest() + } + @Test fun testClass() { doMultiPlatformTest()