KT-12868: if a property initializer is a complex expression that emits additional statements, emit these statements directly before assignment to the property, not at the beginning of constructor

This commit is contained in:
Alexey Andreev
2016-09-07 14:11:01 +03:00
parent 80361bf2fb
commit 16af7d667f
8 changed files with 67 additions and 44 deletions
@@ -0,0 +1,14 @@
package foo
fun f() {}
fun selector() = true
val y = if (selector()) 23 else throw Exception()
val x = if (selector()) { f(); y + 1 } else 999
val z = if (selector()) { f(); x + 1 } else 999
fun box(): String {
if (x != 24) return "fail1: $x"
if (z != 25) return "fail2: $z"
return "OK"
}