Support mapping of KType to j.l.reflect.Type

This commit is contained in:
Alexander Udalov
2015-08-04 22:29:54 +03:00
parent 49b689f883
commit d3e39812cb
20 changed files with 397 additions and 23 deletions

View File

@@ -0,0 +1,11 @@
public class J {
private final int param;
public J(int param) {
this.param = param;
}
public String foo(int[] arr, Object[] arr2, Integer y) {
return "" + param + arr[0] + arr2[0] + y;
}
}

View File

@@ -0,0 +1,15 @@
import kotlin.reflect.jvm.*
import kotlin.test.assertEquals
fun box(): String {
val f = J::foo
assertEquals(
listOf(javaClass<J>(), javaClass<IntArray>(), javaClass<Array<Any>>(), javaClass<Integer>()),
f.parameters.map { it.type.javaType }
)
assertEquals(javaClass<String>(), f.returnType.javaType)
assertEquals("01A2", f.call(J(0), intArrayOf(1), arrayOf("A"), 2))
return "OK"
}

View File

@@ -0,0 +1,5 @@
public class J {
public static String foo(int x, int[] arr, Object[] arr2) {
return "" + x + arr[0] + arr2[0];
}
}

View File

@@ -0,0 +1,12 @@
import kotlin.reflect.jvm.*
import kotlin.test.assertEquals
fun box(): String {
val f = J::foo
assertEquals(listOf(Integer.TYPE, javaClass<IntArray>(), javaClass<Array<Any>>()), f.parameters.map { it.type.javaType })
assertEquals(javaClass<String>(), f.returnType.javaType)
assertEquals("01A", f.call(0, intArrayOf(1), arrayOf("A")))
return "OK"
}