64d40aa285
Add KT-55398 test case into boxInline/reified
47 lines
955 B
Kotlin
Vendored
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"
|
|
} |