Support KClass.qualifiedName in stdlib-only reflection implementation

#KT-34586 Fixed
This commit is contained in:
Alexander Udalov
2019-10-24 19:16:57 +02:00
parent c164745301
commit 5c89f2fa54
10 changed files with 61 additions and 27 deletions
@@ -14,6 +14,7 @@ fun box(): String {
assertEquals(Void::class.java, Void.TYPE.kotlin.javaObjectType)
assertEquals("Void", Void::class.simpleName)
assertEquals("java.lang.Void", Void::class.qualifiedName)
return "OK"
}
@@ -1,6 +1,5 @@
// TARGET_BACKEND: JVM
// WITH_REFLECT
// WITH_RUNTIME
package test
@@ -8,14 +7,19 @@ import kotlin.test.assertEquals
class Klass {
class Nested
class `Nested$With$Dollars`
companion object
}
fun box(): String {
assertEquals("test.Klass", Klass::class.qualifiedName)
assertEquals("test.Klass.Nested", Klass.Nested::class.qualifiedName)
assertEquals("test.Klass.Nested\$With\$Dollars", Klass.`Nested$With$Dollars`::class.qualifiedName)
assertEquals("test.Klass.Companion", Klass.Companion::class.qualifiedName)
assertEquals("java.util.Date", java.util.Date::class.qualifiedName)
assertEquals("kotlin.jvm.internal.Ref.ObjectRef", kotlin.jvm.internal.Ref.ObjectRef::class.qualifiedName)
class Local
assertEquals(null, Local::class.qualifiedName)
@@ -1,25 +1,40 @@
// TARGET_BACKEND: JVM
// WITH_REFLECT
// WITH_RUNTIME
import kotlin.test.assertEquals
fun box(): String {
assertEquals("kotlin.Any", Any::class.qualifiedName)
assertEquals("kotlin.Int", Int::class.qualifiedName)
assertEquals("kotlin.Int.Companion", Int.Companion::class.qualifiedName)
assertEquals("kotlin.IntArray", IntArray::class.qualifiedName)
assertEquals("kotlin.collections.List", List::class.qualifiedName)
assertEquals("kotlin.String", String::class.qualifiedName)
assertEquals("kotlin.String", java.lang.String::class.qualifiedName)
assertEquals("kotlin.CharSequence", CharSequence::class.qualifiedName)
assertEquals("kotlin.Number", Number::class.qualifiedName)
assertEquals("kotlin.Int", Int::class.qualifiedName)
assertEquals("kotlin.Long", Long::class.qualifiedName)
assertEquals("kotlin.Array", Array<Any>::class.qualifiedName)
assertEquals("kotlin.Array", Array<Int>::class.qualifiedName)
assertEquals("kotlin.Array", Array<IntArray>::class.qualifiedName)
assertEquals("kotlin.Array", Array<Array<String>>::class.qualifiedName)
assertEquals("java.util.Date", java.util.Date::class.qualifiedName)
assertEquals("kotlin.jvm.internal.Ref.ObjectRef", kotlin.jvm.internal.Ref.ObjectRef::class.qualifiedName)
assertEquals("java.lang.Void", java.lang.Void::class.qualifiedName)
assertEquals("kotlin.IntArray", IntArray::class.qualifiedName)
assertEquals("kotlin.DoubleArray", DoubleArray::class.qualifiedName)
assertEquals("kotlin.Int.Companion", Int.Companion::class.qualifiedName)
assertEquals("kotlin.Double.Companion", Double.Companion::class.qualifiedName)
assertEquals("kotlin.Char.Companion", Char.Companion::class.qualifiedName)
assertEquals("kotlin.ranges.IntRange", IntRange::class.qualifiedName)
assertEquals("kotlin.collections.List", List::class.qualifiedName)
assertEquals("kotlin.collections.Map.Entry", Map.Entry::class.qualifiedName)
// TODO: KT-11754
assertEquals("kotlin.collections.List", MutableList::class.qualifiedName)
assertEquals("kotlin.collections.Map.Entry", MutableMap.MutableEntry::class.qualifiedName)
assertEquals("kotlin.Function0", Function0::class.qualifiedName)
assertEquals("kotlin.Function1", Function1::class.qualifiedName)
assertEquals("kotlin.Function5", Function5::class.qualifiedName)
assertEquals("kotlin.jvm.functions.FunctionN", Function42::class.qualifiedName)
return "OK"
}