Files
kotlin-fork/compiler/testData/codegen/label/propertyAccessorObject.kt
T
Natalia.Ukhorskaya 94fbf2bdf4 Add labels for extension properties
#KT-2824 Fixed
2012-11-12 13:23:00 +04:00

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"
}