95 lines
3.1 KiB
Kotlin
Vendored
95 lines
3.1 KiB
Kotlin
Vendored
// DONT_TARGET_EXACT_BACKEND: WASM
|
|
// WASM_MUTE_REASON: SPREAD_OPERATOR
|
|
fun barB(vararg args: Byte) = args
|
|
fun barC(vararg args: Char) = args
|
|
fun barD(vararg args: Double) = args
|
|
fun barF(vararg args: Float) = args
|
|
fun barI(vararg args: Int) = args
|
|
fun barJ(vararg args: Long) = args
|
|
fun barS(vararg args: Short) = args
|
|
fun barZ(vararg args: Boolean) = args
|
|
|
|
fun sumInt(x: Int, vararg args: Int): Int {
|
|
var result = x
|
|
for(a in args) {
|
|
result += a
|
|
}
|
|
return result
|
|
}
|
|
|
|
fun sumFunOnParameters(x: Int, vararg args: Int, f: (Int) -> Int): Int {
|
|
var result = f(x)
|
|
for(a in args) {
|
|
result += f(a)
|
|
}
|
|
return result
|
|
}
|
|
|
|
fun concatParameters(vararg args: Int): String {
|
|
var result = ""
|
|
for(a in args) {
|
|
result += a.toString()
|
|
}
|
|
return result
|
|
}
|
|
|
|
fun box(): String {
|
|
|
|
val aB = ByteArray(3)
|
|
val aC = CharArray(3)
|
|
val aD = DoubleArray(3)
|
|
val aF = FloatArray(3)
|
|
val aI = IntArray(3)
|
|
aI[0] = 1
|
|
aI[1] = 2
|
|
aI[2] = 3
|
|
val bI = IntArray(2)
|
|
bI[0] = 4
|
|
bI[1] = 5
|
|
val aJ = LongArray(3)
|
|
val aS = ShortArray(3)
|
|
val aZ = BooleanArray(3)
|
|
|
|
|
|
if (barB(*aB, 23.toByte()).size != 4) return "fail: Byte"
|
|
if (barB(11.toByte(), *aB, 23.toByte(), *aB).size != 8) return "fail: Byte"
|
|
|
|
if (barC(*aC, 'A').size != 4) return "fail: Char"
|
|
if (barC('A', *aC, 'A', *aC).size != 8) return "fail: Char"
|
|
|
|
if (barD(*aD, 2.3).size != 4) return "fail: Double"
|
|
if (barD(*aD, *aD, 2.3).size != 7) return "fail: Double"
|
|
|
|
if (barF(*aF, 2.3f).size != 4) return "fail: Float"
|
|
if (barF(*aF, 2.3f, 1.1f).size != 5) return "fail: Float"
|
|
|
|
if (barI(*aI, 23).size != 4) return "fail: Int"
|
|
if (barI(11, 10, *aI, 23).size != 6) return "fail: Int"
|
|
if (barI(100, *aI, *aI).size != 7) return "fail: Int 3"
|
|
|
|
if (sumInt(100, *aI) != 106) return "fail: sumInt 1"
|
|
if (sumInt(100, *aI, 200) != 306) return "fail: sumInt 2"
|
|
if (sumInt(100, *aI, *aI) != 112) return "fail: sumInt 3"
|
|
if (sumFunOnParameters(100, *aI, 200) { 2*it } != 612) return "fail: sumFunOnParameters 1"
|
|
if (sumFunOnParameters(100, *aI, *aI) { 2*it } != 224) return "fail: sumFunOnParameters 2"
|
|
|
|
if (concatParameters(1,2,3) != "123") return "fail: concatParameters 1"
|
|
if (concatParameters(*aI) != "123") return "fail: concatParameters 2"
|
|
if (concatParameters(4, 5, *aI) != "45123") return "fail: concatParameters 3"
|
|
if (concatParameters(*aI, 4, 5) != "12345") return "fail: concatParameters 4"
|
|
if (concatParameters(*aI, *bI) != "12345") return "fail: concatParameters 5"
|
|
if (concatParameters(*aI, 7, 8, *bI) != "1237845") return "fail: concatParameters 6"
|
|
if (concatParameters(*aI, 7, *bI, *aI, 9) != "1237451239") return "fail: concatParameters 7"
|
|
|
|
if (barJ(*aJ, 23L).size != 4) return "fail: Long"
|
|
if (barJ(*aJ, 23L, *aJ, *aJ).size != 10) return "fail: Long"
|
|
|
|
if (barS(*aS, 23.toShort()).size != 4) return "fail: Short"
|
|
if (barS(*aS, *aS, 23.toShort(), *aS).size != 10) return "fail: Short"
|
|
|
|
if (barZ(*aZ, true).size != 4) return "fail: Boolean"
|
|
if (barZ(false, *aZ, true, *aZ).size != 8) return "fail: Boolean"
|
|
|
|
return "OK"
|
|
}
|