mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-11 08:31:30 +00:00
Fixed KT-14939: use expected receiver type when generating receiver code in get/set methods for bound property references.
Otherwise we have VerifyError for bound receiver 'null' of type 'Nothing?', which is mapped to 'java.lang.Void'.
TODO: proper equality comparison for property accessors ('x::prop.getter', 'x::prop.setter').
37 lines
1.1 KiB
Kotlin
Vendored
37 lines
1.1 KiB
Kotlin
Vendored
// TODO: investigate should it be ran for JS or not
|
|
// IGNORE_BACKEND: JS
|
|
|
|
// See https://youtrack.jetbrains.com/issue/KT-14938
|
|
// WITH_REFLECT
|
|
|
|
class A
|
|
|
|
val a = A()
|
|
val aa = A()
|
|
|
|
fun A?.foo() {}
|
|
|
|
var A?.bar: Int
|
|
get() = 42
|
|
set(value) {}
|
|
|
|
val aFoo = a::foo
|
|
val A_foo = A::foo
|
|
val nullFoo = null::foo
|
|
|
|
val aBar = a::bar
|
|
val A_bar = A::bar
|
|
val nullBar = null::bar
|
|
|
|
fun box(): String =
|
|
when {
|
|
nullFoo != null::foo -> "Bound extension refs with same receiver SHOULD be equal"
|
|
nullFoo == aFoo -> "Bound extension refs with different receivers SHOULD NOT be equal"
|
|
nullFoo == A_foo -> "Bound extension ref with receiver 'null' SHOULD NOT be equal to free ref"
|
|
|
|
nullBar != null::bar -> "Bound extension property refs with same receiver SHOULD be equal"
|
|
nullBar == aBar -> "Bound extension property refs with different receivers SHOULD NOT be equal"
|
|
nullBar == A_bar -> "Bound extension property ref with receiver 'null' SHOULD NOT be equal to free property ref"
|
|
|
|
else -> "OK"
|
|
} |