diff --git a/native/objcexport-header-generator/impl/analysis-api/src/org/jetbrains/kotlin/objcexport/translateToObjCReferenceType.kt b/native/objcexport-header-generator/impl/analysis-api/src/org/jetbrains/kotlin/objcexport/translateToObjCReferenceType.kt index 25e43d496cc..61ecb867a4e 100644 --- a/native/objcexport-header-generator/impl/analysis-api/src/org/jetbrains/kotlin/objcexport/translateToObjCReferenceType.kt +++ b/native/objcexport-header-generator/impl/analysis-api/src/org/jetbrains/kotlin/objcexport/translateToObjCReferenceType.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.objcexport import org.jetbrains.kotlin.analysis.api.KtAnalysisSession +import org.jetbrains.kotlin.analysis.api.types.KtNonErrorClassType import org.jetbrains.kotlin.analysis.api.types.KtType import org.jetbrains.kotlin.backend.konan.objcexport.* import org.jetbrains.kotlin.builtins.StandardNames @@ -53,10 +54,18 @@ private fun KtType.mapToReferenceTypeIgnoringNullability(): ObjCNonNullReference } val typeName = typesMap[classId] - ?: classId!!.shortClassName.asString() - .getObjCKotlinStdlibClassOrProtocolName().objCName //throw IllegalStateException("Unsupported mapping type for $this") + ?: classId!!.shortClassName.asString().getObjCKotlinStdlibClassOrProtocolName().objCName - ObjCClassType(typeName) + val typeArguments = run { + if (this !is KtNonErrorClassType) { + return@run listOf() + } + + ownTypeArguments.mapNotNull { typeArgument -> typeArgument.type } + .map { typeArgumentType -> typeArgumentType.mapToReferenceTypeIgnoringNullability() } + } + + ObjCClassType(typeName, typeArguments) } }