Files
kotlin-fork/compiler/testData/codegen/boxInline/reified/kt55398.kt
T
xiaozihan.larryxiao 64d40aa285 KT-55398 Add test case
Add KT-55398 test case into boxInline/reified
2022-12-23 01:15:18 +00:00

47 lines
955 B
Kotlin
Vendored

// TARGET_BACKEND: JVM
// WITH_STDLIB
// FULL_JDK
// FILE: 1.kt
package test
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
interface Base {
}
class BaseImpl : Base {
}
class ObjectContainer {
}
typealias ObjectContainerProvider = () -> ObjectContainer?
internal inline fun <reified T : Base> ObjectContainerProvider.extensionFun(): ReadOnlyProperty<Any, T> {
return object : ReadOnlyProperty<Any, T> {
val emptyProxy: T by lazy {
T::class.java.getDeclaredConstructor().newInstance()
}
override fun getValue(thisRef: Any, property: KProperty<*>): T = emptyProxy
}
}
// FILE: 2.kt
import test.*
class DefaultObjectContainerProvider : ObjectContainerProvider {
val baseImpl: BaseImpl by extensionFun<BaseImpl>()
override fun invoke(): ObjectContainer? {
return null
}
}
fun box(): String {
DefaultObjectContainerProvider().baseImpl
return "OK"
}