Disallow extension properties with backing fields
#KT-1682 Fixed
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user