2611c7de7e
The problem is that now that the local delegated property metadata is in the $$delegatedProperties array of the containing class, the access to it from code calling an inline function with a local delegated property is illegal. Currently it seems to be a lot of work to support this rather rare case properly (see the comment in ExpressionCodegen.getVariableMetadataValue) so we postpone it and return the old behavior of using the anonymous KProperty subclass for metadata
27 lines
465 B
Kotlin
Vendored
27 lines
465 B
Kotlin
Vendored
// FILE: 1.kt
|
|
package test
|
|
|
|
import kotlin.reflect.KProperty
|
|
|
|
class Delegate {
|
|
operator fun getValue(t: Any?, p: KProperty<*>): String = "O"
|
|
}
|
|
|
|
inline fun test(crossinline s: () -> String): String {
|
|
val delegate = Delegate()
|
|
val o = object {
|
|
fun run(): String {
|
|
val prop: String by delegate
|
|
return prop + s()
|
|
}
|
|
}
|
|
return o.run()
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
import test.*
|
|
|
|
fun box(): String {
|
|
return test { "K" }
|
|
}
|