Provide "toString" for reflection objects
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
import kotlin.test.*
|
||||
import kotlin.reflect.jvm.kotlin
|
||||
|
||||
class A
|
||||
|
||||
fun box(): String {
|
||||
val p = javaClass<A>().kotlin
|
||||
if ("$p" != "class A") return "Fail: $p"
|
||||
|
||||
val s = javaClass<String>().kotlin
|
||||
if ("$s" != "class java.lang.String") return "Fail: $s"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
import kotlin.test.*
|
||||
import kotlin.reflect.jvm.kotlinPackage
|
||||
|
||||
fun box(): String {
|
||||
val p = Class.forName("_DefaultPackage").kotlinPackage
|
||||
if ("$p" != "package <default>") return "Fail: $p"
|
||||
return "OK"
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
import kotlin.reflect.KExtensionProperty
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun check(expected: String, p: KExtensionProperty<*, *>) {
|
||||
var s = p.toString()
|
||||
// Strip "val" or "var"
|
||||
s = s.substring(4)
|
||||
// Strip property name, leave only receiver class
|
||||
s = s.substring(0, s.lastIndexOf('.'))
|
||||
|
||||
assertEquals(expected, s)
|
||||
}
|
||||
|
||||
val Boolean.x: Any get() = this
|
||||
val Char.x: Any get() = this
|
||||
val Byte.x: Any get() = this
|
||||
val Short.x: Any get() = this
|
||||
val Int.x: Any get() = this
|
||||
val Float.x: Any get() = this
|
||||
val Long.x: Any get() = this
|
||||
val Double.x: Any get() = this
|
||||
|
||||
val BooleanArray.x: Any get() = this
|
||||
val CharArray.x: Any get() = this
|
||||
val ByteArray.x: Any get() = this
|
||||
val ShortArray.x: Any get() = this
|
||||
val IntArray.x: Any get() = this
|
||||
val FloatArray.x: Any get() = this
|
||||
val LongArray.x: Any get() = this
|
||||
val DoubleArray.x: Any get() = this
|
||||
|
||||
val Array<Int>.a1: Any get() = this
|
||||
val Array<Any>.a2: Any get() = this
|
||||
val Array<Array<String>>.a3: Any get() = this
|
||||
val Array<BooleanArray>.a4: Any get() = this
|
||||
|
||||
val Map<String, Runnable>.m: Any get() = this
|
||||
|
||||
fun box(): String {
|
||||
check("kotlin.Boolean", Boolean::x)
|
||||
check("kotlin.Char", Char::x)
|
||||
check("kotlin.Byte", Byte::x)
|
||||
check("kotlin.Short", Short::x)
|
||||
check("kotlin.Int", Int::x)
|
||||
check("kotlin.Float", Float::x)
|
||||
check("kotlin.Long", Long::x)
|
||||
check("kotlin.Double", Double::x)
|
||||
|
||||
check("kotlin.BooleanArray", BooleanArray::x)
|
||||
check("kotlin.CharArray", CharArray::x)
|
||||
check("kotlin.ByteArray", ByteArray::x)
|
||||
check("kotlin.ShortArray", ShortArray::x)
|
||||
check("kotlin.IntArray", IntArray::x)
|
||||
check("kotlin.FloatArray", FloatArray::x)
|
||||
check("kotlin.LongArray", LongArray::x)
|
||||
check("kotlin.DoubleArray", DoubleArray::x)
|
||||
|
||||
check("kotlin.Array<java.lang.Integer>", Array<Int>::a1)
|
||||
check("kotlin.Array<java.lang.Object>", Array<Any>::a2)
|
||||
check("kotlin.Array<kotlin.Array<java.lang.String>>", Array<Array<String>>::a3)
|
||||
check("kotlin.Array<kotlin.BooleanArray>", Array<BooleanArray>::a4)
|
||||
|
||||
check("java.util.Map", Map<String, Runnable>::m)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
import kotlin.test.*
|
||||
import kotlin.reflect.jvm.kotlinPackage
|
||||
|
||||
fun box(): String {
|
||||
val p = javaClass<String>().kotlinPackage
|
||||
if ("$p" != "package java.lang.String") return "Fail: $p"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package test.foo.bar
|
||||
|
||||
import kotlin.test.*
|
||||
import kotlin.reflect.jvm.kotlinPackage
|
||||
|
||||
fun box(): String {
|
||||
val p = Class.forName("test.foo.bar.BarPackage").kotlinPackage
|
||||
if ("$p" != "package test.foo.bar") return "Fail: $p"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package test
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
val top = 42
|
||||
var top2 = -23
|
||||
|
||||
val String.ext: Int get() = 0
|
||||
var IntRange?.ext2: Int get() = 0; set(value) {}
|
||||
|
||||
class A(val mem: String)
|
||||
class B(var mem: String)
|
||||
|
||||
fun assertToString(s: String, x: Any) {
|
||||
assertEquals(s, x.toString())
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertToString("val top", ::top)
|
||||
assertToString("var top2", ::top2)
|
||||
assertToString("val java.lang.String.ext", String::ext)
|
||||
assertToString("var kotlin.IntRange.ext2", IntRange::ext2)
|
||||
assertToString("val test.A.mem", A::mem)
|
||||
assertToString("var test.B.mem", B::mem)
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user