[FIR] Keep vararg argument order in resolved calls (KT-17691).
This commit is contained in:
committed by
teamcityserver
parent
f6ce2d893c
commit
eb631bc429
@@ -0,0 +1,41 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// Currently fails as the indices (`va`) are evaluated twice (on get and set).
|
||||
var log = ""
|
||||
|
||||
fun logged(value: String) =
|
||||
value.also { log += value }
|
||||
|
||||
object A {
|
||||
var x = ""
|
||||
var gets = ""
|
||||
var sets = ""
|
||||
|
||||
operator fun get(vararg va: String): String {
|
||||
for (s in va) {
|
||||
gets += s
|
||||
}
|
||||
log += "get;"
|
||||
return x
|
||||
}
|
||||
|
||||
operator fun set(vararg va: String, value: String) {
|
||||
for (s in va) {
|
||||
sets += s
|
||||
}
|
||||
log += "set;"
|
||||
x = value
|
||||
}
|
||||
}
|
||||
|
||||
operator fun String.inc() = this + logged("inc;")
|
||||
|
||||
fun box(): String {
|
||||
A.x = "start;"
|
||||
val xx = A[logged("1;"), logged("2;"), logged("3;")]++
|
||||
if (xx != "start;") return "Failed xx: $xx"
|
||||
if (A.x != "start;inc;") return "Failed A.x: ${A.x}"
|
||||
if (A.gets != "1;2;3;") return "Failed A.gets: ${A.gets}"
|
||||
if (A.sets != "1;2;3;") return "Failed A.sets: ${A.sets}"
|
||||
if (log != "1;2;3;get;inc;set;") return "Failed log: $log"
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user