Files
kotlin-fork/compiler/testData/ir/interpreter/spreadOperator.kt
T
Ivan Kylchik fe74dd2689 Mute failing tests for IrInterpreterAfterPsi2IrTestGenerated
These tests are not passing because of the way how test system works.
To works properly interpreter needs source files. For now they are
passed as additional source files, but this method is not working
for old frontend, some conflicts appear in symbol table. Best way to
fix it is to wait until ir serialization.
2021-08-06 13:33:23 +03:00

38 lines
1.3 KiB
Kotlin
Vendored

// IGNORE_BACKEND: JVM_IR
@CompileTimeCalculation
fun varargSum(quantityToSum: Int, vararg num: Int): Int {
var sum = 0
for (i in 0..(quantityToSum - 1)) {
if (i >= num.size) return sum
sum += num[i]
}
return sum
}
@CompileTimeCalculation
fun sumWithVarargAtFirst(vararg num: Int, quantityToSum: Int = num.size) = varargSum(quantityToSum, *num)
@CompileTimeCalculation
fun concatenation(vararg str: String): String {
var result = ""
for (s in str) result += s
return result
}
@CompileTimeCalculation
fun customArrayConcatenation(vararg array: Any?): String {
var result = ""
for (elem in array) result += elem.toString() + " "
return result
}
const val a1 = <!EVALUATED: `6`!>varargSum(3, 1, 2, 3)<!>
const val a2 = <!EVALUATED: `3`!>varargSum(num = *intArrayOf(1, 2, 3), quantityToSum = 2)<!>
const val a3 = <!EVALUATED: `21`!>varargSum(6, *intArrayOf(1, 2), 3, *intArrayOf(4, 5, 6))<!>
const val b1 = <!EVALUATED: `6`!>sumWithVarargAtFirst(1, 2, 3)<!>
const val b2 = <!EVALUATED: `6`!>sumWithVarargAtFirst(quantityToSum = 3, num = *intArrayOf(1, 2, 3))<!>
const val c1 = <!EVALUATED: `1 2 3`!>concatenation(*arrayOf("1", " "), "2", *arrayOf(" ", "3"))<!>
const val c2 = <!EVALUATED: `1 2.0 3 -1 -2.0 `!>customArrayConcatenation(*arrayOf(1, 2.0), "3", *arrayOf(-1, -2.0))<!>