94fbf2bdf4
#KT-2824 Fixed
53 lines
1004 B
Kotlin
53 lines
1004 B
Kotlin
trait Base {
|
|
fun foo(): Int
|
|
}
|
|
|
|
val Int.getter: Int
|
|
get() {
|
|
return object: Base {
|
|
override fun foo(): Int {
|
|
return this@getter
|
|
}
|
|
}.foo()
|
|
}
|
|
|
|
var Int.setter1: Int = 2
|
|
set(i: Int) {
|
|
$setter1 = object: Base {
|
|
override fun foo(): Int {
|
|
this@setter1
|
|
return 1
|
|
}
|
|
}.foo()
|
|
}
|
|
|
|
|
|
var Int.setter2: Int = 2
|
|
get() {
|
|
return object: Base {
|
|
override fun foo(): Int {
|
|
return this@setter2
|
|
}
|
|
}.foo()
|
|
}
|
|
set(i: Int) {
|
|
$setter2 = object: Base {
|
|
override fun foo(): Int {
|
|
this@setter2
|
|
return 1
|
|
}
|
|
}.foo()
|
|
}
|
|
|
|
|
|
fun box(): String {
|
|
val i = 1
|
|
if (i.getter != 1) return "getter failed"
|
|
|
|
i.setter1 = 2
|
|
if (i.setter1 != 1) return "setter1 failed"
|
|
i.setter2 = 2
|
|
if (i.setter2 != 1) return "setter2 failed"
|
|
|
|
return "OK"
|
|
} |