Initializer is now required for mutable properties with backing fields and open or custom setter #KT-9449 Fixed

Setters without body are not taken into account accordingly to KT-9449.
Old INITIALIZATION_USING_BACKING_FIELD_SETTER are both dropped.
This commit is contained in:
Mikhail Glukhikh
2015-10-14 15:25:25 +03:00
parent 9c9ab671b3
commit c0faf82f77
9 changed files with 112 additions and 26 deletions
@@ -0,0 +1,30 @@
class My(val v: Int) {
// Ok: setter is just private
var x: Int
private set
<!MUST_BE_INITIALIZED!>var y: Int<!>
set(arg) { field = arg }
<!MUST_BE_INITIALIZED!>var z: Int<!>
set(arg) { field = arg }
// Ok: initializer available
var w: Int = v
set(arg) { field = arg }
// Ok: no backing field
var u: Int
get() = w
set(arg) { w = 2 * arg }
constructor(): this(0) {
z = v
}
init {
x = 1
y = 2
u = 3
}
}