diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/functionVsSuspendFunction.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/functionVsSuspendFunction.kt new file mode 100644 index 00000000000..88dd5fede53 --- /dev/null +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/functionVsSuspendFunction.kt @@ -0,0 +1,17 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + +fun useSuspendFn(sfn: suspend () -> Unit) = sfn +fun useFn(fn: () -> Unit) = fn + +fun ambiguous(sfn: suspend () -> Unit) = sfn +fun ambiguous(fn: () -> Unit) = fn + +fun test1(sfn: suspend () -> Unit) = useFn(sfn) +fun test2(fn: () -> Unit) = useSuspendFn(fn) + +fun test3(sfn: suspend () -> Unit) = useSuspendFn(sfn) +fun test4(): suspend () -> Unit = useSuspendFn {} + +fun test5(sfn: suspend () -> Unit) = ambiguous(sfn) +fun test6(fn: () -> Unit) = ambiguous(fn) +fun test7(): () -> Unit = ambiguous {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/functionVsSuspendFunction.txt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/functionVsSuspendFunction.txt new file mode 100644 index 00000000000..4fe679f46b6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/functionVsSuspendFunction.txt @@ -0,0 +1,13 @@ +package + +public fun ambiguous(/*0*/ fn: () -> kotlin.Unit): () -> kotlin.Unit +public fun ambiguous(/*0*/ sfn: suspend () -> kotlin.Unit): suspend () -> kotlin.Unit +public fun test1(/*0*/ sfn: suspend () -> kotlin.Unit): () -> kotlin.Unit +public fun test2(/*0*/ fn: () -> kotlin.Unit): suspend () -> kotlin.Unit +public fun test3(/*0*/ sfn: suspend () -> kotlin.Unit): suspend () -> kotlin.Unit +public fun test4(): suspend () -> kotlin.Unit +public fun test5(/*0*/ sfn: suspend () -> kotlin.Unit): suspend () -> kotlin.Unit +public fun test6(/*0*/ fn: () -> kotlin.Unit): () -> kotlin.Unit +public fun test7(): () -> kotlin.Unit +public fun useFn(/*0*/ fn: () -> kotlin.Unit): () -> kotlin.Unit +public fun useSuspendFn(/*0*/ sfn: suspend () -> kotlin.Unit): suspend () -> kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/noInvokeForSuspendFunction.kt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/noInvokeForSuspendFunction.kt new file mode 100644 index 00000000000..1299adfcac9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/noInvokeForSuspendFunction.kt @@ -0,0 +1,2 @@ +fun test1(sfn: suspend () -> Unit) = sfn() +fun test2(sfn: suspend () -> Unit) = sfn.invoke() \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/noInvokeForSuspendFunction.txt b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/noInvokeForSuspendFunction.txt new file mode 100644 index 00000000000..123d33e963f --- /dev/null +++ b/compiler/testData/diagnostics/tests/coroutines/suspendFunctionType/noInvokeForSuspendFunction.txt @@ -0,0 +1,4 @@ +package + +public fun test1(/*0*/ sfn: suspend () -> kotlin.Unit): [ERROR : Error function type] +public fun test2(/*0*/ sfn: suspend () -> kotlin.Unit): [ERROR : Error function type]