[FIR] Remove dependent data flow variables after receiver reassignment

This commit is contained in:
Ivan Kochurkin
2021-12-14 22:01:45 +03:00
committed by teamcity
parent 1f9ea50d1a
commit c5a03d0573
11 changed files with 184 additions and 25 deletions
@@ -0,0 +1,41 @@
class My(val x: My?, val z: My? = null)
fun baseTest() {
var y: My? = My(My(null))
if (y?.x != null) {
y.x.x
y = My(null)
y.x<!UNSAFE_CALL!>.<!>x
}
}
fun deepChainTest() {
var y: My? = My(My(null))
if (y?.x?.x != null) {
y.x.x.x
y = My(null)
y.x<!UNSAFE_CALL!>.<!>x<!UNSAFE_CALL!>.<!>x
}
}
fun backwardAliasTest(z: My) {
var y = z
if (y.x != null) {
y.x.x
y = My(null)
y.x<!UNSAFE_CALL!>.<!>x
}
}
fun severalMembersTest() {
var y = My(My(null), My(null))
if (y.x != null) {
if (y.z != null) {
y.x.x
y.z.z
y = My(null)
y.x<!UNSAFE_CALL!>.<!>x
y.z<!UNSAFE_CALL!>.<!>z
}
}
}