7041a10ecf
Don't just blindly map property type in PropertyCodegen when generating getter: we already have its full signature, so we can just as well take the type from it. The former also isn't correct for properties which are overrides with a primitive type. Simple mapType is safe for setter though, because the type of a method parameter cannot change with override on JVM The change in StackValue relates to call sites of properties which return Unit: in that case StackValue's this.type is V, whereas the return type of its getter is Ljet/Unit; -- so coerceTo was coercing from the wrong type in case of getter calls #KT-4373 Fixed #KT-4383 Fixed
17 lines
267 B
Kotlin
17 lines
267 B
Kotlin
class D {
|
|
fun get(a: Any, p: PropertyMetadata) { }
|
|
}
|
|
|
|
object P {
|
|
val u = Unit.VALUE
|
|
val v by D()
|
|
var w = Unit.VALUE
|
|
}
|
|
|
|
fun box(): String {
|
|
if (P.u != P.v) return "Fail uv"
|
|
P.w = Unit.VALUE
|
|
if (P.w != P.u) return "Fail w"
|
|
return "OK"
|
|
}
|