CFA: additional jumps to catch / finally generated in the end of try / before exits from try #KT-5469 Fixed

Also #KT-13612 Fixed
(cherry picked from commit 7c188b3)
This commit is contained in:
Mikhail Glukhikh
2016-04-20 17:34:19 +03:00
committed by Mikhail Glukhikh
parent 43954699a7
commit f8039249c6
28 changed files with 638 additions and 89 deletions
@@ -0,0 +1,55 @@
fun exc(flag: Boolean) {
if (flag) throw Exception()
}
fun f1(flag: Boolean) {
val n: Int
try {
if (flag) {
<!UNUSED_VALUE!>n =<!> 1
exc(flag)
return
}
}
catch (e: Exception) {
// KT-13612: reassignment
<!VAL_REASSIGNMENT!>n<!> = 3
}
<!UNINITIALIZED_VARIABLE!>n<!>.hashCode()
}
fun f2(flag: Boolean) {
while (true) {
val n: Int
try {
if (flag) {
<!UNUSED_VALUE!>n =<!> 1
exc(flag)
break
}
}
catch (e: Exception) {
// KT-13612: reassignment
<!VAL_REASSIGNMENT!>n<!> = 3
}
<!UNINITIALIZED_VARIABLE!>n<!>.hashCode()
}
}
fun f3(flag: Boolean) {
while (true) {
val n: Int
try {
if (flag) {
<!UNUSED_VALUE!>n =<!> 1
exc(flag)
continue
}
}
catch (e: Exception) {
// KT-13612: reassignment
<!VAL_REASSIGNMENT!>n<!> = 3
}
<!UNINITIALIZED_VARIABLE!>n<!>.hashCode()
}
}