[Swift Export] Generate Kotlin<->Swift type mapping ^KT-70678
diff --git a/native/native.tests/testData/SwiftExport/binaryTypeName/binaryTypeName.kt b/native/native.tests/testData/SwiftExport/binaryTypeName/binaryTypeName.kt
new file mode 100644
index 0000000..3a32c69
--- /dev/null
+++ b/native/native.tests/testData/SwiftExport/binaryTypeName/binaryTypeName.kt
@@ -0,0 +1,11 @@
+// KIND: STANDALONE
+// MODULE: base
+// FILE: base.kt
+package base
+
+class ClassInBase(val x: Int)
+
+// MODULE: dep
+// FILE: dep.kt
+
+class ClassInDep(val y: Int)
\ No newline at end of file
diff --git a/native/native.tests/testData/SwiftExport/binaryTypeName/binaryTypeName.swift b/native/native.tests/testData/SwiftExport/binaryTypeName/binaryTypeName.swift
new file mode 100644
index 0000000..aef01ab
--- /dev/null
+++ b/native/native.tests/testData/SwiftExport/binaryTypeName/binaryTypeName.swift
@@ -0,0 +1,25 @@
+import base
+import dep
+import ObjectiveC
+
+func testBinaryNames() throws {
+ try assertSame(
+ actual: objc_getClass("SEExportedKotlinPackages_base_ClassInBase") as! base.ClassInBase.Type,
+ expected: base.ClassInBase.self
+ )
+ try assertSame(
+ actual: objc_getClass("SEdep_ClassInDep") as! dep.ClassInDep.Type,
+ expected: dep.ClassInDep.self
+ )
+}
+
+class BinaryTypeNameTests : TestProvider {
+ var tests: [TestCase] = []
+
+ init() {
+ providers.append(self)
+ tests = [
+ TestCase(name: "testBinaryNames", method: withAutorelease(testBinaryNames)),
+ ]
+ }
+}
\ No newline at end of file
diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/SwiftExportExecutionTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/SwiftExportExecutionTestGenerated.java
index 8dcdade..93d67db 100644
--- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/SwiftExportExecutionTestGenerated.java
+++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/SwiftExportExecutionTestGenerated.java
@@ -30,6 +30,12 @@
}
@Test
+ @TestMetadata("binaryTypeName")
+ public void testBinaryTypeName() {
+ runTest("native/native.tests/testData/SwiftExport/binaryTypeName/");
+ }
+
+ @Test
@TestMetadata("char")
public void testChar() {
runTest("native/native.tests/testData/SwiftExport/char/");
diff --git a/native/swift/sir-light-classes/src/org/jetbrains/sir/lightclasses/nodes/SirClassFromKtSymbol.kt b/native/swift/sir-light-classes/src/org/jetbrains/sir/lightclasses/nodes/SirClassFromKtSymbol.kt
index 0281ca1..15f0619 100644
--- a/native/swift/sir-light-classes/src/org/jetbrains/sir/lightclasses/nodes/SirClassFromKtSymbol.kt
+++ b/native/swift/sir-light-classes/src/org/jetbrains/sir/lightclasses/nodes/SirClassFromKtSymbol.kt
@@ -20,6 +20,7 @@
import org.jetbrains.kotlin.sir.providers.utils.computeIsOverrideForDesignatedInit
import org.jetbrains.kotlin.sir.providers.utils.updateImport
import org.jetbrains.kotlin.sir.util.SirSwiftModule
+import org.jetbrains.kotlin.sir.util.swiftFqName
import org.jetbrains.sir.lightclasses.SirFromKtSymbol
import org.jetbrains.sir.lightclasses.extensions.documentation
import org.jetbrains.sir.lightclasses.extensions.lazyWithSessions
@@ -51,6 +52,10 @@
override val name: String by lazy {
ktSymbol.name.asString()
}
+ override val binaryName: String? by lazy {
+ // Alternatively, implement Swift mangling https://github.com/swiftlang/swift/blob/main/docs/ABI/Mangling.rst
+ "SE${swiftFqName.replace(".", "_")}"
+ }
override var parent: SirDeclarationParent
get() = withSessions {
diff --git a/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt b/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt
index 81e74a9..282bb51 100644
--- a/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt
+++ b/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt
@@ -82,6 +82,7 @@
if (this is SirDeclaration) {
printDocumentation()
if (this is SirClass) {
+ printObjCName()
printModifiers()
} else {
printVisibility()
@@ -324,6 +325,10 @@
SirCallableKind.STATIC_METHOD -> "static "
}
)
+
+ private fun SirClass.printObjCName() = binaryName?.let {
+ print("@objc($it) ")
+ }
}
private val SirVisibility.swift
diff --git a/native/swift/sir-providers/src/org/jetbrains/kotlin/sir/providers/utils/KotlinRuntimeModule.kt b/native/swift/sir-providers/src/org/jetbrains/kotlin/sir/providers/utils/KotlinRuntimeModule.kt
index 0b348dc..32b5c5e 100644
--- a/native/swift/sir-providers/src/org/jetbrains/kotlin/sir/providers/utils/KotlinRuntimeModule.kt
+++ b/native/swift/sir-providers/src/org/jetbrains/kotlin/sir/providers/utils/KotlinRuntimeModule.kt
@@ -30,6 +30,7 @@
public val kotlinBase: SirClass by lazy {
buildClass {
name = "KotlinBase"
+ binaryName = "KotlinBase"
origin = KotlinRuntimeElement()
declarations += buildInit {
origin = KotlinRuntimeElement()
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirClass.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirClass.kt
index 5fd0f3a..4c27618 100644
--- a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirClass.kt
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirClass.kt
@@ -20,4 +20,5 @@
abstract override val declarations: List<SirDeclaration>
abstract val superClass: SirType?
abstract val modality: SirClassModality
+ abstract val binaryName: String?
}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirClassBuilder.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirClassBuilder.kt
index 6455cbb..3194036 100644
--- a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirClassBuilder.kt
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirClassBuilder.kt
@@ -23,6 +23,7 @@
val declarations: MutableList<SirDeclaration> = mutableListOf()
var superClass: SirType? = null
var modality: SirClassModality = SirClassModality.UNSPECIFIED
+ var binaryName: String? = null
fun build(): SirClass {
return SirClassImpl(
@@ -33,6 +34,7 @@
declarations,
superClass,
modality,
+ binaryName,
)
}
@@ -59,5 +61,6 @@
copyBuilder.declarations.addAll(original.declarations)
copyBuilder.superClass = original.superClass
copyBuilder.modality = original.modality
+ copyBuilder.binaryName = original.binaryName
return copyBuilder.apply(init).build()
}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirClassImpl.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirClassImpl.kt
index d08ddda..6b87c39d 100644
--- a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirClassImpl.kt
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirClassImpl.kt
@@ -20,6 +20,7 @@
override val declarations: MutableList<SirDeclaration>,
override val superClass: SirType?,
override val modality: SirClassModality,
+ override val binaryName: String?,
) : SirClass() {
override lateinit var parent: SirDeclarationParent
}
diff --git a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt
index 0e89fc7..8fa4d01 100644
--- a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt
+++ b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt
@@ -95,6 +95,7 @@
+field("superClass", typeType, nullable = true)
+field("modality", modalityKind)
+ +field("binaryName", string, nullable = true)
}
val `typealias`: Element by element {
diff --git a/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/SwiftExportRunner.kt b/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/SwiftExportRunner.kt
index c16a902..22429ec 100644
--- a/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/SwiftExportRunner.kt
+++ b/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/SwiftExportRunner.kt
@@ -23,8 +23,11 @@
import org.jetbrains.kotlin.sir.util.SirSwiftModule
import org.jetbrains.kotlin.sir.util.isValidSwiftIdentifier
import org.jetbrains.kotlin.sir.util.swiftName
+import org.jetbrains.kotlin.swiftexport.standalone.builders.TypeMapping
import org.jetbrains.kotlin.swiftexport.standalone.builders.buildBridgeRequests
+import org.jetbrains.kotlin.swiftexport.standalone.builders.buildTypeMappings
import org.jetbrains.kotlin.swiftexport.standalone.builders.createModuleWithScopeProviderFromBinary
+import org.jetbrains.kotlin.swiftexport.standalone.builders.buildRuntimeTypeMappings
import org.jetbrains.kotlin.swiftexport.standalone.builders.initializeSirModule
import org.jetbrains.kotlin.swiftexport.standalone.writer.*
import org.jetbrains.kotlin.swiftexport.standalone.writer.generateBridgeSources
@@ -153,6 +156,7 @@
val swiftApi: Path,
val kotlinBridges: Path,
val cHeaderBridges: Path,
+ val typeMappings: Path,
) : Serializable
/**
@@ -227,12 +231,15 @@
val bridges = generateBridgeSources(module.config.bridgeGenerator, bridgeRequests, true)
+ val typeMappings = (buildRuntimeTypeMappings() + buildTypeMappings(buildResult.module)).toList()
+
return TranslationResult(
packages = buildResult.packages,
sirModule = buildResult.module,
bridgeSources = bridges,
config = module.config,
bridgesModuleName = module.bridgesModuleName,
+ typeMappings = typeMappings,
)
}
@@ -245,6 +252,7 @@
val bridgeSources: BridgeSources,
val config: SwiftExportConfig,
val bridgesModuleName: String,
+ val typeMappings: List<TypeMapping>,
)
private fun Collection<TranslationResult>.createModuleForPackages(): SirModule = buildModule {
@@ -287,12 +295,14 @@
val outputFiles = SwiftExportFiles(
swiftApi = (config.outputPath / sirModule.name / "${sirModule.name}.swift"),
kotlinBridges = (config.outputPath / sirModule.name / "${sirModule.name}.kt"),
- cHeaderBridges = (config.outputPath / sirModule.name / "${sirModule.name}.h")
+ cHeaderBridges = (config.outputPath / sirModule.name / "${sirModule.name}.h"),
+ typeMappings = (config.outputPath / sirModule.name / "${sirModule.name}.type-mappings.txt"),
)
dumpTextAtPath(
swiftSources,
bridgeSources,
+ typeMappings,
outputFiles
)
diff --git a/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/builders/buildTypeMappings.kt b/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/builders/buildTypeMappings.kt
new file mode 100644
index 0000000..bb4c3bb
--- /dev/null
+++ b/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/builders/buildTypeMappings.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.swiftexport.standalone.builders
+
+import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol
+import org.jetbrains.kotlin.name.FqName
+import org.jetbrains.kotlin.sir.SirClass
+import org.jetbrains.kotlin.sir.SirDeclarationContainer
+import org.jetbrains.kotlin.sir.allClasses
+import org.jetbrains.kotlin.sir.allContainers
+import org.jetbrains.kotlin.sir.providers.source.KotlinSource
+import org.jetbrains.kotlin.sir.providers.utils.KotlinRuntimeModule
+
+// Cannot be present in Kotlin identifier name: https://kotlinlang.org/spec/syntax-and-grammar.html#identifiers
+private const val KOTLIN_SWIFT_NAME_SEPARATOR = "`"
+
+internal data class TypeMapping(
+ val kotlinFqName: FqName,
+ val swiftBinaryName: String,
+) {
+ override fun toString() = "$kotlinFqName$KOTLIN_SWIFT_NAME_SEPARATOR$swiftBinaryName"
+}
+
+internal fun buildRuntimeTypeMappings(): Sequence<TypeMapping> = sequenceOf(
+ TypeMapping(FqName("kotlin.Any"), KotlinRuntimeModule.kotlinBase.binaryName!!)
+)
+
+private val SirClass.typeMapping: TypeMapping?
+ get() = (origin as? KotlinSource)?.let {
+ val kotlinFqName = (it.symbol as KaNamedClassSymbol).classId!!.asSingleFqName() // Only named classes can be exported
+ val swiftBinaryName = binaryName!! // Every exported class must have binary name
+ TypeMapping(kotlinFqName, swiftBinaryName)
+ }
+
+internal fun buildTypeMappings(container: SirDeclarationContainer): Sequence<TypeMapping> =
+ container.allClasses().mapNotNull { it.typeMapping } + container.allContainers().flatMap { buildTypeMappings(it) }
\ No newline at end of file
diff --git a/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/writer/dumpResultToFiles.kt b/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/writer/dumpResultToFiles.kt
index 601d7c7..a570170 100644
--- a/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/writer/dumpResultToFiles.kt
+++ b/native/swift/swift-export-standalone/src/org/jetbrains/kotlin/swiftexport/standalone/writer/dumpResultToFiles.kt
@@ -7,16 +7,19 @@
import org.jetbrains.kotlin.sir.bridge.*
import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportFiles
+import org.jetbrains.kotlin.swiftexport.standalone.builders.TypeMapping
import java.io.File
internal fun dumpTextAtPath(
swift: Sequence<String>,
bridges: BridgeSources,
+ typeMapping: List<TypeMapping>,
output: SwiftExportFiles
) {
dumpTextAtFile(bridges.ktSrc, output.kotlinBridges.toFile())
dumpTextAtFile(bridges.cSrc, output.cHeaderBridges.toFile())
dumpTextAtFile(swift, output.swiftApi.toFile())
+ dumpTextAtFile(typeMapping.asSequence().map { it.toString() }, output.typeMappings.toFile())
}
internal fun generateBridgeSources(
diff --git a/native/swift/swift-export-standalone/testData/any/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/any/golden_result/main/main.swift
index e2fc2e0..3fa9bfb 100644
--- a/native/swift/swift-export-standalone/testData/any/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/any/golden_result/main/main.swift
@@ -1,7 +1,7 @@
import KotlinRuntime
@_implementationOnly import KotlinBridges_main
-public final class MyObject : KotlinRuntime.KotlinBase {
+@objc(SEmain_MyObject) public final class MyObject : KotlinRuntime.KotlinBase {
public static var shared: main.MyObject {
get {
return main.MyObject(__externalRCRef: __root___MyObject_get())
diff --git a/native/swift/swift-export-standalone/testData/any/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/any/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..a35fc81
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/any/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+MyObject`SEmain_MyObject
diff --git a/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.swift
index d5e0ec5..43a3a85 100644
--- a/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.swift
@@ -2,7 +2,7 @@
import KotlinRuntime
@_implementationOnly import KotlinBridges_main
-public final class CLASS_WITH_SAME_NAME : KotlinRuntime.KotlinBase {
+@objc(SEmain_CLASS_WITH_SAME_NAME) public final class CLASS_WITH_SAME_NAME : KotlinRuntime.KotlinBase {
public override init() {
let __kt = __root___CLASS_WITH_SAME_NAME_init_allocate()
super.init(__externalRCRef: __kt)
@@ -17,7 +17,7 @@
return CLASS_WITH_SAME_NAME_foo(self.__externalRCRef())
}
}
-public final class ClassWithNonPublicConstructor : KotlinRuntime.KotlinBase {
+@objc(SEmain_ClassWithNonPublicConstructor) public final class ClassWithNonPublicConstructor : KotlinRuntime.KotlinBase {
public var a: Swift.Int32 {
get {
return ClassWithNonPublicConstructor_a_get(self.__externalRCRef())
@@ -29,8 +29,8 @@
super.init(__externalRCRef: __externalRCRef)
}
}
-public final class Foo : KotlinRuntime.KotlinBase {
- public final class INSIDE_CLASS : KotlinRuntime.KotlinBase {
+@objc(SEmain_Foo) public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Foo_INSIDE_CLASS) public final class INSIDE_CLASS : KotlinRuntime.KotlinBase {
public var my_value_inner: Swift.UInt32 {
get {
return Foo_INSIDE_CLASS_my_value_inner_get(self.__externalRCRef())
@@ -94,9 +94,9 @@
return Foo_foo(self.__externalRCRef())
}
}
-public final class OBJECT_NO_PACKAGE : KotlinRuntime.KotlinBase {
- public final class Bar : KotlinRuntime.KotlinBase {
- public final class CLASS_INSIDE_CLASS_INSIDE_OBJECT : KotlinRuntime.KotlinBase {
+@objc(SEmain_OBJECT_NO_PACKAGE) public final class OBJECT_NO_PACKAGE : KotlinRuntime.KotlinBase {
+ @objc(SEmain_OBJECT_NO_PACKAGE_Bar) public final class Bar : KotlinRuntime.KotlinBase {
+ @objc(SEmain_OBJECT_NO_PACKAGE_Bar_CLASS_INSIDE_CLASS_INSIDE_OBJECT) public final class CLASS_INSIDE_CLASS_INSIDE_OBJECT : KotlinRuntime.KotlinBase {
public override init() {
let __kt = OBJECT_NO_PACKAGE_Bar_CLASS_INSIDE_CLASS_INSIDE_OBJECT_init_allocate()
super.init(__externalRCRef: __kt)
@@ -129,7 +129,7 @@
return OBJECT_NO_PACKAGE_Bar_bar(self.__externalRCRef())
}
}
- public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEmain_OBJECT_NO_PACKAGE_Foo) public final class Foo : KotlinRuntime.KotlinBase {
public override init() {
let __kt = OBJECT_NO_PACKAGE_Foo_init_allocate()
super.init(__externalRCRef: __kt)
@@ -141,7 +141,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class OBJECT_INSIDE_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEmain_OBJECT_NO_PACKAGE_OBJECT_INSIDE_OBJECT) public final class OBJECT_INSIDE_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: main.OBJECT_NO_PACKAGE.OBJECT_INSIDE_OBJECT {
get {
return main.OBJECT_NO_PACKAGE.OBJECT_INSIDE_OBJECT(__externalRCRef: OBJECT_NO_PACKAGE_OBJECT_INSIDE_OBJECT_get())
@@ -186,7 +186,7 @@
return OBJECT_NO_PACKAGE_foo(self.__externalRCRef())
}
}
-open class OPEN_CLASS : KotlinRuntime.KotlinBase {
+@objc(SEmain_OPEN_CLASS) open class OPEN_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = __root___OPEN_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -199,7 +199,7 @@
}
}
public extension ExportedKotlinPackages.namespace.deeper {
- public final class DATA_OBJECT_WITH_PACKAGE : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_DATA_OBJECT_WITH_PACKAGE) public final class DATA_OBJECT_WITH_PACKAGE : KotlinRuntime.KotlinBase {
public static var shared: ExportedKotlinPackages.namespace.deeper.DATA_OBJECT_WITH_PACKAGE {
get {
return ExportedKotlinPackages.namespace.deeper.DATA_OBJECT_WITH_PACKAGE(__externalRCRef: namespace_deeper_DATA_OBJECT_WITH_PACKAGE_get())
@@ -236,9 +236,9 @@
return namespace_deeper_DATA_OBJECT_WITH_PACKAGE_toString(self.__externalRCRef())
}
}
- public final class Foo : KotlinRuntime.KotlinBase {
- public final class INSIDE_CLASS : KotlinRuntime.KotlinBase {
- public final class DEEPER_INSIDE_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Foo) public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Foo_INSIDE_CLASS) public final class INSIDE_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Foo_INSIDE_CLASS_DEEPER_INSIDE_CLASS) public final class DEEPER_INSIDE_CLASS : KotlinRuntime.KotlinBase {
public var my_value: Swift.UInt32 {
get {
return namespace_deeper_Foo_INSIDE_CLASS_DEEPER_INSIDE_CLASS_my_value_get(self.__externalRCRef())
@@ -320,7 +320,7 @@
return namespace_deeper_Foo_foo(self.__externalRCRef())
}
}
- public final class NAMESPACED_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_NAMESPACED_CLASS) public final class NAMESPACED_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = namespace_deeper_NAMESPACED_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -332,9 +332,9 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class OBJECT_WITH_PACKAGE : KotlinRuntime.KotlinBase {
- public final class Bar : KotlinRuntime.KotlinBase {
- public final class OBJECT_INSIDE_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE) public final class OBJECT_WITH_PACKAGE : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_Bar) public final class Bar : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_Bar_OBJECT_INSIDE_CLASS) public final class OBJECT_INSIDE_CLASS : KotlinRuntime.KotlinBase {
public static var shared: ExportedKotlinPackages.namespace.deeper.OBJECT_WITH_PACKAGE.Bar.OBJECT_INSIDE_CLASS {
get {
return ExportedKotlinPackages.namespace.deeper.OBJECT_WITH_PACKAGE.Bar.OBJECT_INSIDE_CLASS(__externalRCRef: namespace_deeper_OBJECT_WITH_PACKAGE_Bar_OBJECT_INSIDE_CLASS_get())
@@ -370,7 +370,7 @@
return namespace_deeper_OBJECT_WITH_PACKAGE_Bar_bar(self.__externalRCRef())
}
}
- public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_Foo) public final class Foo : KotlinRuntime.KotlinBase {
public override init() {
let __kt = namespace_deeper_OBJECT_WITH_PACKAGE_Foo_init_allocate()
super.init(__externalRCRef: __kt)
@@ -382,7 +382,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class OBJECT_INSIDE_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_OBJECT_INSIDE_OBJECT) public final class OBJECT_INSIDE_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: ExportedKotlinPackages.namespace.deeper.OBJECT_WITH_PACKAGE.OBJECT_INSIDE_OBJECT {
get {
return ExportedKotlinPackages.namespace.deeper.OBJECT_WITH_PACKAGE.OBJECT_INSIDE_OBJECT(__externalRCRef: namespace_deeper_OBJECT_WITH_PACKAGE_OBJECT_INSIDE_OBJECT_get())
@@ -429,8 +429,8 @@
}
}
public extension ExportedKotlinPackages.namespace {
- public final class Foo : KotlinRuntime.KotlinBase {
- public final class INSIDE_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_Foo) public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_Foo_INSIDE_CLASS) public final class INSIDE_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = namespace_Foo_INSIDE_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -469,7 +469,7 @@
return namespace_Foo_foo(self.__externalRCRef())
}
}
- public final class NAMESPACED_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_NAMESPACED_CLASS) public final class NAMESPACED_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = namespace_NAMESPACED_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -483,7 +483,7 @@
}
}
public extension ExportedKotlinPackages.why_we_need_module_names {
- public final class CLASS_WITH_SAME_NAME : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_why_we_need_module_names_CLASS_WITH_SAME_NAME) public final class CLASS_WITH_SAME_NAME : KotlinRuntime.KotlinBase {
public override init() {
let __kt = why_we_need_module_names_CLASS_WITH_SAME_NAME_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..4c16c43
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/classes/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,25 @@
+kotlin.Any`KotlinBase
+ClassWithNonPublicConstructor`SEmain_ClassWithNonPublicConstructor
+Foo`SEmain_Foo
+CLASS_WITH_SAME_NAME`SEmain_CLASS_WITH_SAME_NAME
+OPEN_CLASS`SEmain_OPEN_CLASS
+OBJECT_NO_PACKAGE`SEmain_OBJECT_NO_PACKAGE
+why_we_need_module_names.CLASS_WITH_SAME_NAME`SEExportedKotlinPackages_why_we_need_module_names_CLASS_WITH_SAME_NAME
+Foo.INSIDE_CLASS`SEmain_Foo_INSIDE_CLASS
+OBJECT_NO_PACKAGE.Foo`SEmain_OBJECT_NO_PACKAGE_Foo
+OBJECT_NO_PACKAGE.Bar`SEmain_OBJECT_NO_PACKAGE_Bar
+OBJECT_NO_PACKAGE.OBJECT_INSIDE_OBJECT`SEmain_OBJECT_NO_PACKAGE_OBJECT_INSIDE_OBJECT
+OBJECT_NO_PACKAGE.Bar.CLASS_INSIDE_CLASS_INSIDE_OBJECT`SEmain_OBJECT_NO_PACKAGE_Bar_CLASS_INSIDE_CLASS_INSIDE_OBJECT
+namespace.NAMESPACED_CLASS`SEExportedKotlinPackages_namespace_NAMESPACED_CLASS
+namespace.Foo`SEExportedKotlinPackages_namespace_Foo
+namespace.Foo.INSIDE_CLASS`SEExportedKotlinPackages_namespace_Foo_INSIDE_CLASS
+namespace.deeper.NAMESPACED_CLASS`SEExportedKotlinPackages_namespace_deeper_NAMESPACED_CLASS
+namespace.deeper.Foo`SEExportedKotlinPackages_namespace_deeper_Foo
+namespace.deeper.OBJECT_WITH_PACKAGE`SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE
+namespace.deeper.DATA_OBJECT_WITH_PACKAGE`SEExportedKotlinPackages_namespace_deeper_DATA_OBJECT_WITH_PACKAGE
+namespace.deeper.Foo.INSIDE_CLASS`SEExportedKotlinPackages_namespace_deeper_Foo_INSIDE_CLASS
+namespace.deeper.Foo.INSIDE_CLASS.DEEPER_INSIDE_CLASS`SEExportedKotlinPackages_namespace_deeper_Foo_INSIDE_CLASS_DEEPER_INSIDE_CLASS
+namespace.deeper.OBJECT_WITH_PACKAGE.Foo`SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_Foo
+namespace.deeper.OBJECT_WITH_PACKAGE.Bar`SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_Bar
+namespace.deeper.OBJECT_WITH_PACKAGE.OBJECT_INSIDE_OBJECT`SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_OBJECT_INSIDE_OBJECT
+namespace.deeper.OBJECT_WITH_PACKAGE.Bar.OBJECT_INSIDE_CLASS`SEExportedKotlinPackages_namespace_deeper_OBJECT_WITH_PACKAGE_Bar_OBJECT_INSIDE_CLASS
diff --git a/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.swift b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.swift
index 3774cc0..3045ade 100644
--- a/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.swift
+++ b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.swift
@@ -3,7 +3,7 @@
import KotlinRuntime
public extension ExportedKotlinPackages.dependency.four {
- public final class AnotherBar : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_dependency_four_AnotherBar) public final class AnotherBar : KotlinRuntime.KotlinBase {
public override init() {
let __kt = dependency_four_AnotherBar_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.type-mappings.txt b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.type-mappings.txt
new file mode 100644
index 0000000..aa2811f
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/dependency_deeper_neighbor_exported/dependency_deeper_neighbor_exported.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+dependency.four.AnotherBar`SEExportedKotlinPackages_dependency_four_AnotherBar
diff --git a/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_one/main_one.type-mappings.txt b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_one/main_one.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_one/main_one.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_three/main_three.type-mappings.txt b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_three/main_three.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_three/main_three.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_two/main_two.type-mappings.txt b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_two/main_two.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/consuming_dependencies/golden_result/main_two/main_two.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/functions/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/functions/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/functions/golden_result/main/main.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.swift
index 9f502f1..43c5ad6 100644
--- a/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.swift
@@ -1,7 +1,7 @@
@_implementationOnly import KotlinBridges_main
import KotlinRuntime
-open class Foo : KotlinRuntime.KotlinBase {
+@objc(SEmain_Foo) open class Foo : KotlinRuntime.KotlinBase {
public override init() {
let __kt = __root___Foo_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..1af432e
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/inheritance/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+Foo`SEmain_Foo
diff --git a/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.swift
index 29bc87e..97f76ee 100644
--- a/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.swift
@@ -1,7 +1,7 @@
@_implementationOnly import KotlinBridges_main
import KotlinRuntime
-public final class Outer : KotlinRuntime.KotlinBase {
+@objc(SEmain_Outer) public final class Outer : KotlinRuntime.KotlinBase {
public override init() {
let __kt = __root___Outer_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..e3ec2df
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/inner_classes/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+Outer`SEmain_Outer
diff --git a/native/swift/swift-export-standalone/testData/no_package/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/no_package/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/no_package/golden_result/main/main.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.swift
index 53fb758..ceb801b 100644
--- a/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.swift
@@ -2,7 +2,7 @@
import KotlinRuntime
public typealias Foo = Swift.Never
-public final class Bar : KotlinRuntime.KotlinBase {
+@objc(SEmain_Bar) public final class Bar : KotlinRuntime.KotlinBase {
public var p: Swift.Never {
get {
return Bar_p_get(self.__externalRCRef())
diff --git a/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..cb6f062
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/nothing_type/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+Bar`SEmain_Bar
diff --git a/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.swift
index d82bdd8..d0f1078 100644
--- a/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.swift
@@ -31,7 +31,7 @@
}
public extension ExportedKotlinPackages.org.kotlin.foo {
public typealias Typealias = Swift.Int32
- public final class Clazz : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_org_kotlin_foo_Clazz) public final class Clazz : KotlinRuntime.KotlinBase {
public override init() {
let __kt = org_kotlin_foo_Clazz_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..aa9f942
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/package_flattening/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+org.kotlin.foo.Clazz`SEExportedKotlinPackages_org_kotlin_foo_Clazz
diff --git a/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.swift
index 21c239b..a97ad09 100644
--- a/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.swift
@@ -3,7 +3,7 @@
import KotlinRuntime
public extension ExportedKotlinPackages.org.kotlin {
- public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_org_kotlin_Foo) public final class Foo : KotlinRuntime.KotlinBase {
public override init() {
let __kt = org_kotlin_Foo_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..abf9e6d
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/package_flattening_invalid_target/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+org.kotlin.Foo`SEExportedKotlinPackages_org_kotlin_Foo
diff --git a/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.swift
index 21c239b..a97ad09 100644
--- a/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.swift
@@ -3,7 +3,7 @@
import KotlinRuntime
public extension ExportedKotlinPackages.org.kotlin {
- public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_org_kotlin_Foo) public final class Foo : KotlinRuntime.KotlinBase {
public override init() {
let __kt = org_kotlin_Foo_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..abf9e6d
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/package_flattening_missing_target/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+org.kotlin.Foo`SEExportedKotlinPackages_org_kotlin_Foo
diff --git a/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.swift
index 7b08fe9..5308b9d 100644
--- a/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.swift
@@ -30,7 +30,7 @@
}
public extension main.org.kotlin.foo {
public typealias Typealias = Swift.Int32
- public final class Clazz : KotlinRuntime.KotlinBase {
+ @objc(SEmain_org_kotlin_foo_Clazz) public final class Clazz : KotlinRuntime.KotlinBase {
public override init() {
let __kt = org_kotlin_foo_Clazz_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..4e75ea0
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,2 @@
+kotlin.Any`KotlinBase
+org.kotlin.foo.Clazz`SEmain_org_kotlin_foo_Clazz
diff --git a/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main2/main2.type-mappings.txt b/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main2/main2.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/single_module_production/golden_result/main2/main2.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/strings/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/strings/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/strings/golden_result/main/main.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.swift
index 0828511..1f6afc3 100644
--- a/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.swift
@@ -2,8 +2,8 @@
import KotlinRuntime
@_implementationOnly import KotlinBridges_main
-public final class Class_without_package : KotlinRuntime.KotlinBase {
- public final class INNER_CLASS : KotlinRuntime.KotlinBase {
+@objc(SEmain_Class_without_package) public final class Class_without_package : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Class_without_package_INNER_CLASS) public final class INNER_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = Class_without_package_INNER_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -15,7 +15,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Class_without_package_INNER_OBJECT) public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: main.Class_without_package.INNER_OBJECT {
get {
return main.Class_without_package.INNER_OBJECT(__externalRCRef: Class_without_package_INNER_OBJECT_get())
@@ -41,8 +41,8 @@
super.init(__externalRCRef: __externalRCRef)
}
}
-public final class Demo : KotlinRuntime.KotlinBase {
- public final class INNER_CLASS : KotlinRuntime.KotlinBase {
+@objc(SEmain_Demo) public final class Demo : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Demo_INNER_CLASS) public final class INNER_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = Demo_INNER_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -54,7 +54,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Demo_INNER_OBJECT) public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: main.Demo.INNER_OBJECT {
get {
return main.Demo.INNER_OBJECT(__externalRCRef: Demo_INNER_OBJECT_get())
@@ -161,7 +161,7 @@
return main.Demo.INNER_OBJECT(__externalRCRef: Demo_combine_inner_objects__TypesOfArguments__uintptr_t_uintptr_t_uintptr_t_uintptr_t__(self.__externalRCRef(), arg1.__externalRCRef(), arg2.__externalRCRef(), arg3.__externalRCRef(), arg4.__externalRCRef()))
}
}
-open class OPEN_CLASS : KotlinRuntime.KotlinBase {
+@objc(SEmain_OPEN_CLASS) open class OPEN_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = __root___OPEN_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -173,8 +173,8 @@
super.init(__externalRCRef: __externalRCRef)
}
}
-public final class Object_without_package : KotlinRuntime.KotlinBase {
- public final class INNER_CLASS : KotlinRuntime.KotlinBase {
+@objc(SEmain_Object_without_package) public final class Object_without_package : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Object_without_package_INNER_CLASS) public final class INNER_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = Object_without_package_INNER_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -186,7 +186,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Object_without_package_INNER_OBJECT) public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: main.Object_without_package.INNER_OBJECT {
get {
return main.Object_without_package.INNER_OBJECT(__externalRCRef: Object_without_package_INNER_OBJECT_get())
@@ -324,8 +324,8 @@
return __root___recieve_object_wp__TypesOfArguments__uintptr_t__(arg.__externalRCRef())
}
public extension ExportedKotlinPackages.namespace.deeper {
- public final class Class_with_package : KotlinRuntime.KotlinBase {
- public final class INNER_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Class_with_package) public final class Class_with_package : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Class_with_package_INNER_CLASS) public final class INNER_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = namespace_deeper_Class_with_package_INNER_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -337,7 +337,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Class_with_package_INNER_OBJECT) public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: ExportedKotlinPackages.namespace.deeper.Class_with_package.INNER_OBJECT {
get {
return ExportedKotlinPackages.namespace.deeper.Class_with_package.INNER_OBJECT(__externalRCRef: namespace_deeper_Class_with_package_INNER_OBJECT_get())
@@ -363,7 +363,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class DATA_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_DATA_OBJECT) public final class DATA_OBJECT : KotlinRuntime.KotlinBase {
public var a: Swift.Int32 {
get {
return namespace_deeper_DATA_OBJECT_a_get(self.__externalRCRef())
@@ -389,8 +389,8 @@
return namespace_deeper_DATA_OBJECT_toString(self.__externalRCRef())
}
}
- public final class Object_with_package : KotlinRuntime.KotlinBase {
- public final class INNER_CLASS : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Object_with_package) public final class Object_with_package : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Object_with_package_INNER_CLASS) public final class INNER_CLASS : KotlinRuntime.KotlinBase {
public override init() {
let __kt = namespace_deeper_Object_with_package_INNER_CLASS_init_allocate()
super.init(__externalRCRef: __kt)
@@ -402,7 +402,7 @@
super.init(__externalRCRef: __externalRCRef)
}
}
- public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_namespace_deeper_Object_with_package_INNER_OBJECT) public final class INNER_OBJECT : KotlinRuntime.KotlinBase {
public static var shared: ExportedKotlinPackages.namespace.deeper.Object_with_package.INNER_OBJECT {
get {
return ExportedKotlinPackages.namespace.deeper.Object_with_package.INNER_OBJECT(__externalRCRef: namespace_deeper_Object_with_package_INNER_OBJECT_get())
diff --git a/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..de80b26
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/type_reference/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,18 @@
+kotlin.Any`KotlinBase
+OPEN_CLASS`SEmain_OPEN_CLASS
+Demo`SEmain_Demo
+Class_without_package`SEmain_Class_without_package
+Object_without_package`SEmain_Object_without_package
+Demo.INNER_CLASS`SEmain_Demo_INNER_CLASS
+Demo.INNER_OBJECT`SEmain_Demo_INNER_OBJECT
+Class_without_package.INNER_CLASS`SEmain_Class_without_package_INNER_CLASS
+Class_without_package.INNER_OBJECT`SEmain_Class_without_package_INNER_OBJECT
+Object_without_package.INNER_CLASS`SEmain_Object_without_package_INNER_CLASS
+Object_without_package.INNER_OBJECT`SEmain_Object_without_package_INNER_OBJECT
+namespace.deeper.Class_with_package`SEExportedKotlinPackages_namespace_deeper_Class_with_package
+namespace.deeper.Object_with_package`SEExportedKotlinPackages_namespace_deeper_Object_with_package
+namespace.deeper.DATA_OBJECT`SEExportedKotlinPackages_namespace_deeper_DATA_OBJECT
+namespace.deeper.Class_with_package.INNER_CLASS`SEExportedKotlinPackages_namespace_deeper_Class_with_package_INNER_CLASS
+namespace.deeper.Class_with_package.INNER_OBJECT`SEExportedKotlinPackages_namespace_deeper_Class_with_package_INNER_OBJECT
+namespace.deeper.Object_with_package.INNER_CLASS`SEExportedKotlinPackages_namespace_deeper_Object_with_package_INNER_CLASS
+namespace.deeper.Object_with_package.INNER_OBJECT`SEExportedKotlinPackages_namespace_deeper_Object_with_package_INNER_OBJECT
diff --git a/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.swift
index 79d1c4f..ea89a3f 100644
--- a/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.swift
@@ -7,7 +7,7 @@
public typealias ShouldHaveNoAnnotation = Swift.Int32
public typealias dataObjectWithPackage = main.DATA_OBJECT_WITH_PACKAGE
public typealias never = Swift.Never
-public final class DATA_OBJECT_WITH_PACKAGE : KotlinRuntime.KotlinBase {
+@objc(SEmain_DATA_OBJECT_WITH_PACKAGE) public final class DATA_OBJECT_WITH_PACKAGE : KotlinRuntime.KotlinBase {
public static var shared: main.DATA_OBJECT_WITH_PACKAGE {
get {
return main.DATA_OBJECT_WITH_PACKAGE(__externalRCRef: __root___DATA_OBJECT_WITH_PACKAGE_get())
@@ -52,7 +52,7 @@
public extension ExportedKotlinPackages.typealiases.inner {
public typealias Foo = ExportedKotlinPackages.typealiases.Foo
public typealias LargeInteger = Swift.Int64
- public final class Bar : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_typealiases_inner_Bar) public final class Bar : KotlinRuntime.KotlinBase {
public override init() {
let __kt = typealiases_inner_Bar_init_allocate()
super.init(__externalRCRef: __kt)
@@ -68,7 +68,7 @@
public extension ExportedKotlinPackages.typealiases {
public typealias Bar = ExportedKotlinPackages.typealiases.inner.Bar
public typealias SmallInteger = Swift.Int16
- public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEExportedKotlinPackages_typealiases_Foo) public final class Foo : KotlinRuntime.KotlinBase {
public override init() {
let __kt = typealiases_Foo_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..6a971cb
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/typealiases/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,4 @@
+kotlin.Any`KotlinBase
+DATA_OBJECT_WITH_PACKAGE`SEmain_DATA_OBJECT_WITH_PACKAGE
+typealiases.Foo`SEExportedKotlinPackages_typealiases_Foo
+typealiases.inner.Bar`SEExportedKotlinPackages_typealiases_inner_Bar
diff --git a/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.swift b/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.swift
index 63976ac..0c4c20d 100644
--- a/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.swift
+++ b/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.swift
@@ -1,8 +1,8 @@
@_implementationOnly import KotlinBridges_main
import KotlinRuntime
-public final class Foo : KotlinRuntime.KotlinBase {
- public final class Nested : KotlinRuntime.KotlinBase {
+@objc(SEmain_Foo) public final class Foo : KotlinRuntime.KotlinBase {
+ @objc(SEmain_Foo_Nested) public final class Nested : KotlinRuntime.KotlinBase {
public override init() {
let __kt = Foo_Nested_init_allocate()
super.init(__externalRCRef: __kt)
diff --git a/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..097adb0
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/unsupportedDeclarationsReporting/golden_result/main/main.type-mappings.txt
@@ -0,0 +1,3 @@
+kotlin.Any`KotlinBase
+Foo`SEmain_Foo
+Foo.Nested`SEmain_Foo_Nested
diff --git a/native/swift/swift-export-standalone/testData/variables/golden_result/main/main.type-mappings.txt b/native/swift/swift-export-standalone/testData/variables/golden_result/main/main.type-mappings.txt
new file mode 100644
index 0000000..b310d17
--- /dev/null
+++ b/native/swift/swift-export-standalone/testData/variables/golden_result/main/main.type-mappings.txt
@@ -0,0 +1 @@
+kotlin.Any`KotlinBase
diff --git a/native/swift/swift-export-standalone/tests/org/jetbrains/kotlin/swiftexport/standalone/AbstractSwiftRunnerTest.kt b/native/swift/swift-export-standalone/tests/org/jetbrains/kotlin/swiftexport/standalone/AbstractSwiftRunnerTest.kt
index abccc63..c68e547 100644
--- a/native/swift/swift-export-standalone/tests/org/jetbrains/kotlin/swiftexport/standalone/AbstractSwiftRunnerTest.kt
+++ b/native/swift/swift-export-standalone/tests/org/jetbrains/kotlin/swiftexport/standalone/AbstractSwiftRunnerTest.kt
@@ -39,10 +39,12 @@
val expectedSwift = expectedFiles / it.name / "${it.name}.swift"
val expectedCHeader = expectedFiles / it.name / "${it.name}.h"
val expectedKotlinBridge = expectedFiles / it.name / "${it.name}.kt"
+ val expectedTypeMappings = expectedFiles / it.name / "${it.name}.type-mappings.txt"
KotlinTestUtils.assertEqualsToFile(expectedSwift, files.swiftApi.readText())
KotlinTestUtils.assertEqualsToFile(expectedCHeader, files.cHeaderBridges.readText())
KotlinTestUtils.assertEqualsToFile(expectedKotlinBridge, files.kotlinBridges.readText())
+ KotlinTestUtils.assertEqualsToFile(expectedTypeMappings, files.typeMappings.readText())
}
is SwiftExportModule.SwiftOnly -> {
val expectedFiles = testPathFull.toPath() / "golden_result/"