cd9209a7ee
Most of these tests check the specific structure of lambdas when they are generated as classes, and they start to fail once invokedynamic lambdas are enabled by default.
37 lines
1.6 KiB
Kotlin
Vendored
37 lines
1.6 KiB
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// LAMBDAS: CLASS
|
|
|
|
import java.util.Date
|
|
|
|
fun assertGenericSuper(expected: String, function: Any?) {
|
|
val clazz = (function as java.lang.Object).getClass()!!
|
|
val genericSuper = clazz.getGenericInterfaces()[0]!!
|
|
if ("$genericSuper" != expected)
|
|
throw AssertionError("Fail, expected: $expected, actual: $genericSuper")
|
|
}
|
|
|
|
|
|
val unitFun = { }
|
|
val intFun = { 42 }
|
|
val stringParamFun = { x: String -> }
|
|
val listFun = { l: List<String> -> l }
|
|
val mutableListFun = fun (l: MutableList<Double>): MutableList<Int> = null!!
|
|
val funWithIn = fun (x: Comparable<String>) {}
|
|
|
|
val extensionFun = fun Any.() {}
|
|
val extensionWithArgFun = fun Long.(x: Any): Date = Date()
|
|
|
|
fun box(): String {
|
|
assertGenericSuper("kotlin.jvm.functions.Function0<kotlin.Unit>", unitFun)
|
|
assertGenericSuper("kotlin.jvm.functions.Function0<java.lang.Integer>", intFun)
|
|
assertGenericSuper("kotlin.jvm.functions.Function1<java.lang.String, kotlin.Unit>", stringParamFun)
|
|
assertGenericSuper("kotlin.jvm.functions.Function1<java.util.List<? extends java.lang.String>, java.util.List<? extends java.lang.String>>", listFun)
|
|
assertGenericSuper("kotlin.jvm.functions.Function1<java.util.List<java.lang.Double>, java.util.List<java.lang.Integer>>", mutableListFun)
|
|
assertGenericSuper("kotlin.jvm.functions.Function1<java.lang.Comparable<? super java.lang.String>, kotlin.Unit>", funWithIn)
|
|
|
|
assertGenericSuper("kotlin.jvm.functions.Function1<java.lang.Object, kotlin.Unit>", extensionFun)
|
|
assertGenericSuper("kotlin.jvm.functions.Function2<java.lang.Long, java.lang.Object, java.util.Date>", extensionWithArgFun)
|
|
|
|
return "OK"
|
|
}
|