Ignore suspend functions in reverse C interop. (#2189)
This commit is contained in:
+2
-4
@@ -107,6 +107,8 @@ private fun org.jetbrains.kotlin.types.KotlinType.isGeneric() =
|
|||||||
private fun isExportedFunction(descriptor: FunctionDescriptor): Boolean {
|
private fun isExportedFunction(descriptor: FunctionDescriptor): Boolean {
|
||||||
if (!descriptor.isEffectivelyPublicApi || !descriptor.kind.isReal || descriptor.isExpect)
|
if (!descriptor.isEffectivelyPublicApi || !descriptor.kind.isReal || descriptor.isExpect)
|
||||||
return false
|
return false
|
||||||
|
if (descriptor.isSuspend)
|
||||||
|
return false
|
||||||
descriptor.allParameters.forEach {
|
descriptor.allParameters.forEach {
|
||||||
if (it.type.isGeneric()) return false
|
if (it.type.isGeneric()) return false
|
||||||
}
|
}
|
||||||
@@ -276,9 +278,6 @@ private class ExportedElement(val kind: ElementKind,
|
|||||||
val original = descriptor.original as FunctionDescriptor
|
val original = descriptor.original as FunctionDescriptor
|
||||||
val returned = when {
|
val returned = when {
|
||||||
original is ConstructorDescriptor -> uniqueName(original, shortName) to original.constructedClass
|
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!!)!!
|
else -> uniqueName(original, shortName) to TypeUtils.getClassDescriptor(original.returnType!!)!!
|
||||||
}
|
}
|
||||||
val uniqueNames = owner.paramsToUniqueNames(original.explicitParameters)
|
val uniqueNames = owner.paramsToUniqueNames(original.explicitParameters)
|
||||||
@@ -298,7 +297,6 @@ private class ExportedElement(val kind: ElementKind,
|
|||||||
val original = descriptor.original as FunctionDescriptor
|
val original = descriptor.original as FunctionDescriptor
|
||||||
val returnedType = when {
|
val returnedType = when {
|
||||||
original is ConstructorDescriptor -> owner.context.builtIns.unitType
|
original is ConstructorDescriptor -> owner.context.builtIns.unitType
|
||||||
original.isSuspend -> owner.context.builtIns.nullableAnyType
|
|
||||||
else -> original.returnType!!
|
else -> original.returnType!!
|
||||||
}
|
}
|
||||||
val returnedClass = TypeUtils.getClassDescriptor(returnedType)!!
|
val returnedClass = TypeUtils.getClassDescriptor(returnedType)!!
|
||||||
|
|||||||
Reference in New Issue
Block a user