Prohibit using suspend functions as SAM in fun interfaces

#KT-40978 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2020-08-10 18:49:55 +03:00
parent 607f99ed3c
commit e49cdf0ca2
12 changed files with 60 additions and 10 deletions
@@ -71,7 +71,7 @@ interface BaseWithGeneric {
fun interface GoodExtensionGeneric : GoodGeneric<String>
fun interface GoodSuspend {
suspend fun invoke()
<!FUN_INTERFACE_WITH_SUSPEND_FUNCTION!>suspend<!> fun invoke()
}
class WithNestedFun<K> {
@@ -0,0 +1,14 @@
// !LANGUAGE: +NewInference +SamConversionForKotlinFunctions +SamConversionPerArgument +FunctionalInterfaceConversion
// !DIAGNOSTICS: -UNUSED_PARAMETER -NOTHING_TO_INLINE
fun interface SuspendRunnable {
suspend fun invoke()
}
fun run(r: SuspendRunnable) {}
suspend fun bar() {}
fun test() {
run(::bar)
}
@@ -1,9 +1,8 @@
// FIR_IDENTICAL
// !LANGUAGE: +NewInference +SamConversionForKotlinFunctions +SamConversionPerArgument +FunctionalInterfaceConversion
// !DIAGNOSTICS: -UNUSED_PARAMETER -NOTHING_TO_INLINE
fun interface SuspendRunnable {
suspend fun invoke()
<!FUN_INTERFACE_WITH_SUSPEND_FUNCTION!>suspend<!> fun invoke()
}
fun run(r: SuspendRunnable) {}