FIR: implement backing field references via 'field' synthetic variable

This commit is contained in:
Mikhail Glukhikh
2019-06-17 16:59:48 +03:00
parent 11620d848b
commit 16ead49967
16 changed files with 199 additions and 21 deletions
@@ -0,0 +1,7 @@
var myProperty = listOf(1, 2, 3)
get() {
return field + field
}
set(param) {
field = param
}
@@ -0,0 +1,8 @@
FILE: backingField.kt
public final var myProperty: R|kotlin/collections/List<kotlin/Int>| = R|kotlin/collections/listOf|<R|kotlin/Int|>(Int(1), Int(2), Int(3))
public get(): R|kotlin/collections/List<kotlin/Int>| {
^ F|/myProperty|.R|kotlin/collections/plus|<R|kotlin/Int|>(F|/myProperty|)
}
public set(param: R|kotlin/collections/List<kotlin/Int>|): R|kotlin/Unit| {
F|/myProperty| = R|<local>/param|
}
+13
View File
@@ -0,0 +1,13 @@
import java.util.HashSet
val a: MutableSet<String>? = HashSet()
var b: MutableSet<String>? = null
set(_) {
field = HashSet()
}
fun foo() {
var c: MutableSet<String>? = null
c = HashSet()
}
@@ -0,0 +1,12 @@
FILE: hashSet.kt
public final val a: R|kotlin/collections/MutableSet<kotlin/String>|? = R|java/util/HashSet.HashSet|<R|kotlin/Any|?>()
public get(): R|kotlin/collections/MutableSet<kotlin/String>|?
public final var b: R|kotlin/collections/MutableSet<kotlin/String>|? = Null(null)
public get(): R|kotlin/collections/MutableSet<kotlin/String>|?
public set(_: R|kotlin/collections/MutableSet<kotlin/String>|?): R|kotlin/Unit| {
F|/b| = R|java/util/HashSet.HashSet|()
}
public final fun foo(): R|kotlin/Unit| {
lvar c: R|kotlin/collections/MutableSet<kotlin/String>|? = Null(null)
R|<local>/c| = R|java/util/HashSet.HashSet|()
}