fun booleanVararg(vararg xs: Boolean) { if (xs.size != 1 && xs[0] != true) throw AssertionError() } fun byteVararg(vararg xs: Byte) { if (xs.size != 1 && xs[0] != 1.toByte()) throw AssertionError() } fun shortVararg(vararg xs: Short) { if (xs.size != 1 && xs[0] != 1.toShort()) throw AssertionError() } fun intVararg(vararg xs: Int) { if (xs.size != 1 && xs[0] != 1) throw AssertionError() } fun longVararg(vararg xs: Long) { if (xs.size != 1 && xs[0] != 1L) throw AssertionError() } fun floatVararg(vararg xs: Float) { if (xs.size != 1 && xs[0] != 1.0f) throw AssertionError() } fun doubleVararg(vararg xs: Double) { if (xs.size != 1 && xs[0] != 1.0) throw AssertionError() } fun anyVararg(vararg xs: Any?) { if (xs.size != 1 && (xs[0] != 1 && xs[0] != null)) throw AssertionError() } fun genericVararg(vararg xs: T) { if (xs.size != 1 && (xs[0] != 1 && xs[0] != null)) throw AssertionError() } fun box(): String { booleanVararg(*booleanArrayOf(true)) booleanVararg(*BooleanArray(1)) booleanVararg(*BooleanArray(1) { true }) booleanVararg(xs = *booleanArrayOf(true)) booleanVararg(xs = *BooleanArray(1)) booleanVararg(xs = *BooleanArray(1) { true }) byteVararg(*byteArrayOf(1)) byteVararg(*ByteArray(1)) byteVararg(*ByteArray(1) { 1 }) byteVararg(xs = *byteArrayOf(1)) byteVararg(xs = *ByteArray(1)) byteVararg(xs = *ByteArray(1) { 1 }) shortVararg(*shortArrayOf(1)) shortVararg(*ShortArray(1)) shortVararg(*ShortArray(1) { 1 }) shortVararg(xs = *shortArrayOf(1)) shortVararg(xs = *ShortArray(1)) shortVararg(xs = *ShortArray(1) { 1 }) intVararg(*intArrayOf(1)) intVararg(*IntArray(1)) intVararg(*IntArray(1) { 1 }) intVararg(xs = *intArrayOf(1)) intVararg(xs = *IntArray(1)) intVararg(xs = *IntArray(1) { 1 }) longVararg(*longArrayOf(1L)) longVararg(*LongArray(1)) longVararg(*LongArray(1) { 1L }) longVararg(xs = *longArrayOf(1L)) longVararg(xs = *LongArray(1)) longVararg(xs = *LongArray(1) { 1L }) floatVararg(*floatArrayOf(1.0f)) floatVararg(*FloatArray(1)) floatVararg(*FloatArray(1) { 1.0f }) floatVararg(xs = *floatArrayOf(1.0f)) floatVararg(xs = *FloatArray(1)) floatVararg(xs = *FloatArray(1) { 1.0f }) doubleVararg(*doubleArrayOf(1.0)) doubleVararg(*DoubleArray(1)) doubleVararg(*DoubleArray(1) { 1.0 }) doubleVararg(xs = *doubleArrayOf(1.0)) doubleVararg(xs = *DoubleArray(1)) doubleVararg(xs = *DoubleArray(1) { 1.0 }) anyVararg(*arrayOf(1)) anyVararg(*Array(1) { 1 }) anyVararg(*arrayOfNulls(1)) anyVararg(xs = *arrayOf(1)) anyVararg(xs = *Array(1) { 1 }) anyVararg(xs = *arrayOfNulls(1)) genericVararg(*arrayOf(1)) genericVararg(*Array(1) { 1 }) genericVararg(*arrayOfNulls(1)) genericVararg(xs = *arrayOf(1)) genericVararg(xs = *Array(1) { 1 }) genericVararg(xs = *arrayOfNulls(1)) return "OK" }