36 lines
852 B
Kotlin
Vendored
36 lines
852 B
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// WITH_REFLECT
|
|
|
|
import java.io.*
|
|
import kotlin.test.assertEquals
|
|
|
|
class A {
|
|
fun foo(s: String = "", vararg xs: Long): String = "foo"
|
|
}
|
|
|
|
fun check(x: Any) {
|
|
val baos = ByteArrayOutputStream()
|
|
val oos = ObjectOutputStream(baos)
|
|
oos.writeObject(x)
|
|
oos.close()
|
|
|
|
val bais = ByteArrayInputStream(baos.toByteArray())
|
|
val ois = ObjectInputStream(bais)
|
|
assertEquals(x, ois.readObject())
|
|
ois.close()
|
|
}
|
|
|
|
fun coercionToUnit(f: (A, String, LongArray) -> Unit): Any = f
|
|
fun varargToElement(f: (A, String, Long, Long) -> String): Any = f
|
|
fun defaultAndVararg(f: (A) -> String): Any = f
|
|
fun allOfTheAbove(f: (A) -> Unit): Any = f
|
|
|
|
fun box(): String {
|
|
check(coercionToUnit(A::foo))
|
|
check(varargToElement(A::foo))
|
|
check(defaultAndVararg(A::foo))
|
|
check(allOfTheAbove(A::foo))
|
|
|
|
return "OK"
|
|
}
|