Files
kotlin-fork/compiler/testData/diagnostics/tests/suspendConversion/basicSuspendConversionGenerics.kt
T
Mikhail Zarechenskiy 537a59d6ca Introduce basic suspend conversion in FE
#KT-15917 In Progress
2020-04-22 16:10:44 +03:00

31 lines
851 B
Kotlin
Vendored

// !LANGUAGE: +SuspendConversion
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION
class Inv2<T, K>
fun <T> foo1(f: suspend (T) -> String): T = TODO()
fun <T> foo2(f: suspend () -> T): T = TODO()
fun <T, K> foo3(f: suspend (T) -> K): Inv2<T, K> = TODO()
fun <I> id(e: I): I = e
fun test(f: (Int) -> String, g: () -> String) {
val a0 = foo1(f)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>a0<!>
val a1 = foo2(g)
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>a1<!>
val a2 = foo3(f)
<!DEBUG_INFO_EXPRESSION_TYPE("Inv2<kotlin.Int, kotlin.String>")!>a2<!>
val a3 = foo1(id(f))
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>a3<!>
val a4 = foo2(id(g))
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.String")!>a4<!>
val a5 = foo3(id(f))
<!DEBUG_INFO_EXPRESSION_TYPE("Inv2<kotlin.Int, kotlin.String>")!>a5<!>
}