From 2a63c409fa5b6f72db81eb0a1674d01b62ba6c3a Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Sat, 26 May 2018 22:25:39 +0300 Subject: [PATCH] kotlin-objective-c cross resolve: public objc types --- .../backend/konan/objcexport/objcTypes.kt | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/objcTypes.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/objcTypes.kt index aa117f897fc..e1f13163f7d 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/objcTypes.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/objcTypes.kt @@ -29,19 +29,23 @@ sealed class ObjCType { if (attrsAndName.isEmpty()) this else "$this ${attrsAndName.trimStart()}" } -internal class ObjCRawType(private val rawText: String) : ObjCType() { +class ObjCRawType( + val rawText: String +) : ObjCType() { override fun render(attrsAndName: String): String = rawText.withAttrsAndName(attrsAndName) } -internal sealed class ObjCReferenceType : ObjCType() +sealed class ObjCReferenceType : ObjCType() -internal sealed class ObjCNonNullReferenceType : ObjCReferenceType() +sealed class ObjCNonNullReferenceType : ObjCReferenceType() -internal data class ObjCNullableReferenceType(val nonNullType: ObjCNonNullReferenceType) : ObjCReferenceType() { +data class ObjCNullableReferenceType( + val nonNullType: ObjCNonNullReferenceType +) : ObjCReferenceType() { override fun render(attrsAndName: String) = nonNullType.render(" _Nullable".withAttrsAndName(attrsAndName)) } -internal class ObjCClassType( +class ObjCClassType( val className: String, val typeArguments: List = emptyList() ) : ObjCNonNullReferenceType() { @@ -58,21 +62,23 @@ internal class ObjCClassType( } } -internal class ObjCProtocolType(val protocolName: String) : ObjCNonNullReferenceType() { - +class ObjCProtocolType( + val protocolName: String +) : ObjCNonNullReferenceType() { override fun render(attrsAndName: String) = "id<$protocolName>".withAttrsAndName(attrsAndName) } -internal object ObjCIdType : ObjCNonNullReferenceType() { +object ObjCIdType : ObjCNonNullReferenceType() { override fun render(attrsAndName: String) = "id".withAttrsAndName(attrsAndName) } -internal object ObjCInstanceType : ObjCNonNullReferenceType() { +object ObjCInstanceType : ObjCNonNullReferenceType() { override fun render(attrsAndName: String): String = "instancetype".withAttrsAndName(attrsAndName) } -internal class ObjCBlockPointerType( - val returnType: ObjCReferenceType, val parameterTypes: List +class ObjCBlockPointerType( + val returnType: ObjCReferenceType, + val parameterTypes: List ) : ObjCNonNullReferenceType() { override fun render(attrsAndName: String) = returnType.render(buildString { @@ -85,11 +91,16 @@ internal class ObjCBlockPointerType( }) } -internal class ObjCPrimitiveType(val cName: String) : ObjCType() { +class ObjCPrimitiveType( + val cName: String +) : ObjCType() { override fun render(attrsAndName: String) = cName.withAttrsAndName(attrsAndName) } -internal class ObjCPointerType(val pointee: ObjCType, val nullable: Boolean = false) : ObjCType() { +class ObjCPointerType( + val pointee: ObjCType, + val nullable: Boolean = false +) : ObjCType() { override fun render(attrsAndName: String) = pointee.render("*${if (nullable) { " _Nullable".withAttrsAndName(attrsAndName) @@ -98,7 +109,7 @@ internal class ObjCPointerType(val pointee: ObjCType, val nullable: Boolean = fa }}") } -internal object ObjCVoidType : ObjCType() { +object ObjCVoidType : ObjCType() { override fun render(attrsAndName: String) = "void".withAttrsAndName(attrsAndName) }