Disallow extension properties with backing fields

#KT-1682 Fixed
This commit is contained in:
Alexander Udalov
2014-05-28 19:17:31 +04:00
parent ea31f372aa
commit d78d4bc44c
72 changed files with 297 additions and 578 deletions
@@ -3,27 +3,9 @@ val Int.getter: Int
return this@getter
}
var Int.setter1: Int = 2
get() {
return this@setter1
}
set(i: Int) {
$setter1 = this@setter1
}
var Int.setter2: Int = 2
set(i: Int) {
$setter2 = this@setter2
}
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"
}
}
@@ -5,19 +5,9 @@ val Int.getter: Int
}.invoke()
}
var Int.setter: Int = 1
set(i: Int) {
$setter = {
this@setter
}.invoke()
}
fun box(): String {
val i = 1
if (i.getter != 1) return "getter failed"
i.setter = 2
if (i.setter != 1) return "setter failed"
return "OK"
}
}
@@ -7,7 +7,8 @@ val Int.getter: Int
}
var Int.setter: Int = 1
var Int.setter: Int
get() = 1
set(i: Int) {
val extFun = { Int.() ->
this@setter
@@ -24,4 +25,4 @@ fun box(): String {
if (i.setter != 1) return "setter failed"
return "OK"
}
}
@@ -4,50 +4,16 @@ trait Base {
val Int.getter: Int
get() {
return object: Base {
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"
}
}