Specify relevant declaration type in "create actual" fix #KT-20325 Fixed

This commit is contained in:
Mikhail Glukhikh
2017-10-03 12:06:59 +03:00
parent 93109c0d0e
commit d85c2dbe1f
10 changed files with 31 additions and 5 deletions
@@ -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(
@@ -0,0 +1,3 @@
// "Create actual annotation class for platform JVM" "true"
expect annotation class <caret>Ann(val x: Int, val y: String)
@@ -0,0 +1,3 @@
// "Create actual annotation class for platform JVM" "true"
expect annotation class Ann(val x: Int, val y: String)
@@ -0,0 +1 @@
// Ann: to be implemented
@@ -0,0 +1,2 @@
// Ann: to be implemented
actual annotation class Ann(val x: Int, val y: String)
+1 -1
View File
@@ -1,4 +1,4 @@
// "Create actual class for platform JS" "true"
// "Create actual enum class for platform JS" "true"
expect enum class <caret>MyEnum {
FIRST,
@@ -1,4 +1,4 @@
// "Create actual class for platform JS" "true"
// "Create actual enum class for platform JS" "true"
expect enum class MyEnum {
FIRST,
+1 -1
View File
@@ -1,4 +1,4 @@
// "Create actual class for platform JVM" "true"
// "Create actual object for platform JVM" "true"
expect object <caret>Object {
fun foo(): String
@@ -1,4 +1,4 @@
// "Create actual class for platform JVM" "true"
// "Create actual object for platform JVM" "true"
expect object Object {
fun foo(): String
@@ -49,6 +49,11 @@ class QuickFixMultiModuleTest : AbstractQuickFixMultiModuleTest() {
doMultiPlatformTest(impls = "js" to TargetPlatformKind.JavaScript)
}
@Test
fun testAnnotation() {
doMultiPlatformTest()
}
@Test
fun testClass() {
doMultiPlatformTest()