Support reflection tests on Android

This commit is contained in:
Mikhael Bogdanov
2019-01-22 17:48:45 +01:00
parent 91980c5293
commit f2a51d3b80
49 changed files with 235 additions and 174 deletions
@@ -3,6 +3,8 @@
// WITH_RUNTIME
package test
import kotlin.test.assertEquals
abstract class A<R> {
@@ -20,6 +22,6 @@ inline fun<reified T> foo(): A<T> {
fun box(): String {
val y = foo<String>();
assertEquals("OK", y.f())
assertEquals("A<java.lang.String>", y.javaClass.getGenericSuperclass()?.toString())
assertEquals("test.A<java.lang.String>", y.javaClass.getGenericSuperclass()?.toString())
return "OK"
}
@@ -3,12 +3,14 @@
// WITH_RUNTIME
// Basically this test checks that no captured type used as argument for signature mapping
package test
class SwOperator<T>: Operator<List<T>, T>
interface Operator<R, T>
open class Inv<T>
class Obs<Y> {
inline fun <reified X> lift(lift: Operator<out X, in Y>) = object : Inv<X>() {}
}
@@ -19,7 +21,7 @@ fun box(): String {
val inv = o.lift(SwOperator())
val signature = inv.javaClass.genericSuperclass.toString()
if (signature != "Inv<java.util.List<? extends java.lang.CharSequence>>") return "fail 1: $signature"
if (signature != "test.Inv<java.util.List<? extends java.lang.CharSequence>>") return "fail 1: $signature"
return "OK"
}
@@ -2,6 +2,7 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
package test
import kotlin.test.assertEquals
@@ -27,6 +28,6 @@ inline fun<reified T> foo(): G {
fun box(): String {
val y = foo<String>().bar();
assertEquals("OK", y.toString())
assertEquals("A<java.lang.String>", y.javaClass.getGenericSuperclass()?.toString())
assertEquals("test.A<java.lang.String>", y.javaClass.getGenericSuperclass()?.toString())
return "OK"
}
@@ -3,6 +3,8 @@
// WITH_RUNTIME
package test
import kotlin.test.assertEquals
open class A<T1, T2, T3>
@@ -27,7 +29,7 @@ fun box(): String {
Triple("java.lang.Integer", "java.lang.Double", "java.lang.Integer"),
Triple("java.lang.Boolean", "java.lang.Double", "java.lang.Integer"),
Triple("java.lang.Double", "java.lang.Boolean", "java.lang.Integer")
).map { "A<${it.first}, ${it.second}, ${it.third}>" }
).map { "test.A<${it.first}, ${it.second}, ${it.third}>" }
for (i in expected.indices) {
assertEquals(expected[i], result[i].javaClass.getGenericSuperclass()?.toString(), "$i-th element")
@@ -2,6 +2,7 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
package test
import kotlin.test.assertEquals
@@ -34,7 +35,7 @@ fun box(): String {
val x2 = res.second.bar()
assertEquals("OK", x1.toString())
assertEquals("OK", x2.toString())
assertEquals("A<java.lang.Integer>", x1.javaClass.getGenericSuperclass()?.toString())
assertEquals("A<java.lang.String>", x2.javaClass.getGenericSuperclass()?.toString())
assertEquals("test.A<java.lang.Integer>", x1.javaClass.getGenericSuperclass()?.toString())
assertEquals("test.A<java.lang.String>", x2.javaClass.getGenericSuperclass()?.toString())
return "OK"
}