Add more tests for type operators on the jvm

This commit is contained in:
Steven Schäfer
2019-05-22 14:42:05 +02:00
committed by max-kammerer
parent b6ea135e70
commit 6bf16a96e1
11 changed files with 99 additions and 5 deletions
@@ -2,13 +2,13 @@
// 'as?' should be generated as a single 'safeAs...' intrinsic call
// without instanceof or 'is...'.
inline fun <reified T> safeAs(x: Any) {
x as? T
inline fun <reified T> safeAs(x: Any): T? {
return x as? T
}
fun test() {
val x: Any = arrayListOf("abc", "def")
safeAs<MutableList<*>>(x)
safeAs<MutableList<*>>(x)?.clear()
}
// 0 INSTANCEOF java/util/List
+1 -1
View File
@@ -8,7 +8,7 @@ inline fun <reified X> Any?.foo4() = foo2<X?>()
inline fun <reified A> Any?.foo5() = foo<A>()
// 1 LDC "T"
// 1 ICONST_1\s*LDC "T"\s*INVOKESTATIC kotlin/jvm/internal/Intrinsics.reifiedOperationMarker
// 1 LDC "Y\?"
// 1 LDC "Z\?"
// 1 LDC "X\?"
@@ -0,0 +1,15 @@
inline fun <reified T> Any?.foo() = this as? T
inline fun <reified Y> Any?.foo2() = foo<Y?>()
inline fun <reified Z> Any?.foo3() = foo2<Z>()
inline fun <reified X> Any?.foo4() = foo2<X?>()
inline fun <reified A> Any?.foo5() = foo<A>()
// 1 ICONST_2\s*LDC "T"\s*INVOKESTATIC kotlin/jvm/internal/Intrinsics.reifiedOperationMarker
// 1 LDC "Y\?"
// 1 LDC "Z\?"
// 1 LDC "X\?"
// 1 LDC "A"