[ObjCExport] Initial support for ObjCClassType type arguments

^KT-65167
This commit is contained in:
Sebastian Sellmair
2024-01-24 08:00:16 +01:00
parent a6a27466fc
commit 262bfb18cc
@@ -1,6 +1,7 @@
package org.jetbrains.kotlin.objcexport package org.jetbrains.kotlin.objcexport
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession 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.analysis.api.types.KtType
import org.jetbrains.kotlin.backend.konan.objcexport.* import org.jetbrains.kotlin.backend.konan.objcexport.*
import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.builtins.StandardNames
@@ -53,10 +54,18 @@ private fun KtType.mapToReferenceTypeIgnoringNullability(): ObjCNonNullReference
} }
val typeName = typesMap[classId] val typeName = typesMap[classId]
?: classId!!.shortClassName.asString() ?: classId!!.shortClassName.asString().getObjCKotlinStdlibClassOrProtocolName().objCName
.getObjCKotlinStdlibClassOrProtocolName().objCName //throw IllegalStateException("Unsupported mapping type for $this")
ObjCClassType(typeName) val typeArguments = run {
if (this !is KtNonErrorClassType) {
return@run listOf<ObjCNonNullReferenceType>()
}
ownTypeArguments.mapNotNull { typeArgument -> typeArgument.type }
.map { typeArgumentType -> typeArgumentType.mapToReferenceTypeIgnoringNullability() }
}
ObjCClassType(typeName, typeArguments)
} }
} }