IR: preserve argument evaluation order more carefully

1. receivers should be evaluated before named arguments;
 2. just because an argument has no side effects doesn't mean it is not
    affected by the other arguments' side effects - in that case it
    should still be evaluated in source order.

 #KT-47660 Fixed
This commit is contained in:
pyos
2021-07-12 15:30:55 +02:00
committed by TeamCityServer
parent b5942204dc
commit 3dc7b6c3ee
14 changed files with 123 additions and 298 deletions
@@ -0,0 +1,8 @@
fun box(): String {
var x = "c"
val call = test(c = x, b = { x = "a"; "b" }(), a = x)
return if (call == "abc") "OK" else "fail: $call != abc"
}
fun test(a: String, b: String, c: String): String =
a + b + c