FIR DFA: fork flow everywhere

In theory, forking persistent flows should be cheap because of object
reuse, so the proposal here is to start from scratch and prove
redundancy of forks on a case-by-case basis. Something something better
safe than sorry.

^KT-28333 tag fixed-in-k2
^KT-28489 tag fixed-in-k2
This commit is contained in:
pyos
2022-11-08 21:33:40 +01:00
committed by teamcity
parent 757921e63e
commit edaca59d83
17 changed files with 554 additions and 683 deletions
@@ -41,7 +41,7 @@ fun test4(x: String?) {
foo(
id(if (true) run { p = null; n() } else run { n() }),
1,
run { p<!UNSAFE_CALL!>.<!>length; 123 } // Bad (p = null possible)
run { <!SMARTCAST_IMPOSSIBLE!>p<!>.length; 123 } // Bad (p = null possible)
)
p<!UNSAFE_CALL!>.<!>length // Bad (p = null possible)
}