Add labels for extension properties

#KT-2824 Fixed
This commit is contained in:
Natalia.Ukhorskaya
2012-11-09 11:52:17 +04:00
parent d4212ecdfc
commit 94fbf2bdf4
15 changed files with 401 additions and 11 deletions
@@ -0,0 +1,47 @@
trait Base {
fun foo()
}
val ~getter1~Int.getter1: Int
get() {
return `getter1`this@getter1
}
val ~getter2~Int.getter2: Base
get() {
return object: Base {
override fun foo() {
`getter2`this@getter2
}
}
}
val ~getter3~Int.getter3: Base
get() = object: Base {
override fun foo() {
`getter3`this@getter3
}
}
val ~getter4~Int.getter4: Int
get() {
return {
`getter4`this@getter4
}.invoke()
}
val ~getter5~Int.getter5: Int
get() {
val extFun = { Int.() ->
`getter5`this@getter5
}
return `getter5`this@getter5.extFun()
}
class Test {
val ~innerGetter1~Int.innerGetter1: Int
get() {
return `innerGetter1`this@innerGetter1
}
}
@@ -0,0 +1,32 @@
trait Base {
fun foo()
}
var ~setter1~Int.setter1: Int = 2
set(i: Int) {
$setter1 = `setter1`this@setter1
}
var ~setter2~Int.setter2: Base? = null
set(i: Base?) {
$setter2 = object: Base {
override fun foo() {
`setter2`this@setter2
}
}
}
var ~setter3~Int.setter3: Int = 1
set(i: Int) {
{
`setter3`this@setter3
}.invoke()
}
var ~setter4~Int.setter4: Int = 1
set(i: Int) {
val extFun = { Int.() ->
`setter4`this@setter4
}
`setter4`this@setter4.extFun()
}