From 262bfb18cc1e7f51748307504c6a05a768ca9c00 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Wed, 24 Jan 2024 08:00:16 +0100 Subject: [PATCH] [ObjCExport] Initial support for ObjCClassType type arguments ^KT-65167 --- .../objcexport/translateToObjCReferenceType.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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) } }