Introduce support for plugin-defined intrinsics in old JVM backend:
(Old is created first because all intrinsics emit bytecode anyway) Provide intrinsic for serializer<T>() function so it won't invoke typeOf() construction and KType->KSerializer conversion making it fast and truly reflectionless Add support for recalculating stack size in plugin-defined intrinsics since it is needed for correct work: Unify method for recalculating stack size with existing typeOf intrinsic Add testdata for IR for future intrinsic in IR
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// CURIOUS_ABOUT test
|
||||
// WITH_STDLIB
|
||||
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
class Simple(val firstName: String, val lastName: String)
|
||||
|
||||
@Serializable
|
||||
data class Box<out T>(val boxed: T)
|
||||
|
||||
@Serializable
|
||||
object SerializableObject {}
|
||||
|
||||
inline fun <reified T: Any> getSer(): KSerializer<T> {
|
||||
return serializer<T>()
|
||||
}
|
||||
|
||||
inline fun <reified T: Any> getBoxSer(): KSerializer<Box<T>> {
|
||||
return serializer<Box<T>>()
|
||||
}
|
||||
|
||||
inline fun <reified T: Any> listSer(): KSerializer<List<T>> {
|
||||
return serializer<List<T>>()
|
||||
}
|
||||
|
||||
fun test() {
|
||||
serializer<Simple>()
|
||||
getSer<Simple>()
|
||||
getSer<Box<Simple>>()
|
||||
getBoxSer<Simple>()
|
||||
listSer<Simple>()
|
||||
|
||||
serializer<Box<List<Simple>>>()
|
||||
|
||||
listSer<Box<List<Simple>>>()
|
||||
|
||||
serializer<Int>()
|
||||
|
||||
serializer<SerializableObject>()
|
||||
|
||||
listSer<List<Box<Int>>>()
|
||||
}
|
||||
Reference in New Issue
Block a user