Files
kotlin-fork/compiler/testData/codegen/bytecodeListing/delegatedProperty/delegatedPropertiesInCompanionObject.kt
T
Alexander Udalov 04c5bbdcf8 JVM IR: change generation scheme of property $delegate methods
Generate $delegate method as instance method in
PropertyReferenceDelegationLowering, and remove dispatch receiver later
in MakePropertyDelegateMethodsStatic. The method needs to be static to
be non-overridable (see delegateMethodIsNonOverridable.kt), and public
to be accessible in reflection.

Otherwise we generated incorrect IR where a static function accessed an
instance field of the containing class, which failed in multiple places
including LocalDeclarationsLowering.

 #KT-48350 Fixed
2021-08-31 14:07:22 +02:00

21 lines
316 B
Kotlin
Vendored

// WITH_RUNTIME
import kotlin.reflect.KProperty
class DP {
operator fun provideDelegate(t: Any?, kp: KProperty<*>) =
lazy { "OK" }
}
class H1 {
companion object {
val property: String by DP()
}
}
class H2 {
companion object {
val property: String by lazy { "OK" }
}
}