Files
kotlin-fork/compiler/testData/codegen/box/vararg/boxingArgumentsForVararg.kt
T
2022-12-29 11:57:46 +00:00

40 lines
1.1 KiB
Kotlin
Vendored

fun <T> anyVararg(vararg x: T): Boolean = x[0] == 123f
fun boxingNullablePrimitiveToAny(x: Float?): Boolean {
if (x !== null) {
return anyVararg(x)
}
return false
}
fun boxingPrimitiveToAny(x: Float): Boolean =
anyVararg(x)
fun primitiveVararg(vararg x: Float): Boolean = x[0] == 123f
fun unboxingNullablePrimitiveToPrimitive(x: Float?): Boolean {
if (x !== null) {
return primitiveVararg(x)
}
return false
}
fun noBoxingPrimitiveToPrimitive(x: Float): Boolean =
primitiveVararg(x)
inline class InlineClass(val x: Float)
fun <T : InlineClass> valueClassAnyVararg(vararg x: T): Boolean = x[0].x == 123f
fun boxingInlineClassToAny(x: InlineClass): Boolean =
valueClassAnyVararg(x)
fun box(): String {
if (!boxingNullablePrimitiveToAny(123f)) return "Fail1"
if (!boxingPrimitiveToAny(123f)) return "Fail2"
if (!unboxingNullablePrimitiveToPrimitive(123f)) return "Fail3"
if (!noBoxingPrimitiveToPrimitive(123f)) return "Fail4"
if (!boxingInlineClassToAny(InlineClass(123f))) return "Fail5"
return "OK"
}