From 0cdd076210ad85bda79b7463e6875a134153a7ed Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Wed, 10 Oct 2018 10:26:36 +0300 Subject: [PATCH] Ignore suspend functions in reverse C interop. (#2189) --- .../org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt index 0cfbe9df33a..5f36deb8314 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt @@ -107,6 +107,8 @@ private fun org.jetbrains.kotlin.types.KotlinType.isGeneric() = private fun isExportedFunction(descriptor: FunctionDescriptor): Boolean { if (!descriptor.isEffectivelyPublicApi || !descriptor.kind.isReal || descriptor.isExpect) return false + if (descriptor.isSuspend) + return false descriptor.allParameters.forEach { if (it.type.isGeneric()) return false } @@ -276,9 +278,6 @@ private class ExportedElement(val kind: ElementKind, val original = descriptor.original as FunctionDescriptor val returned = when { original is ConstructorDescriptor -> uniqueName(original, shortName) to original.constructedClass - // Suspend functions actually return 'Any?'. - original.isSuspend -> uniqueName(original, shortName) to - TypeUtils.getClassDescriptor(owner.context.builtIns.nullableAnyType)!! else -> uniqueName(original, shortName) to TypeUtils.getClassDescriptor(original.returnType!!)!! } val uniqueNames = owner.paramsToUniqueNames(original.explicitParameters) @@ -298,7 +297,6 @@ private class ExportedElement(val kind: ElementKind, val original = descriptor.original as FunctionDescriptor val returnedType = when { original is ConstructorDescriptor -> owner.context.builtIns.unitType - original.isSuspend -> owner.context.builtIns.nullableAnyType else -> original.returnType!! } val returnedClass = TypeUtils.getClassDescriptor(returnedType)!!