Files
kotlin-fork/compiler/testData/codegen/box/argumentOrder/arguments.kt
T
pyos 3dc7b6c3ee 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
2021-07-13 21:23:15 +03:00

19 lines
571 B
Kotlin
Vendored

class C(val x: String) {
fun test(a: String, b: String): String =
x + a + b
}
fun String.test(a: String, b: String): String =
this + a + b
fun box(): String {
var res = ""
var call = {res += "1"; "x"}().test(b = {res += "2"; "b"}(), a = {res += "3"; "a"}())
if (res != "123" || call != "xab") return "fail1: $res != 123 or $call != xab"
res = ""
call = {res += "1"; C("x")}().test(b = {res += "2"; "b"}(), a = {res += "3"; "a"}())
if (res != "123" || call != "xab") return "fail2: $res != 123 or $call != xab"
return "OK"
}