[Swift export][KT-65672] Import bridges module in the generated one

This commit is contained in:
Sergey Bogolepov
2024-02-08 17:29:31 +02:00
committed by Space Team
parent 10e4d34868
commit 168e4414a1
2 changed files with 7 additions and 1 deletions
@@ -84,7 +84,7 @@ public fun runSwiftExport(
} }
val module = buildSwiftModule(input, isDebugModeEnabled) val module = buildSwiftModule(input, isDebugModeEnabled, bridgeModuleName)
.transformToSwift() .transformToSwift()
val bridgeRequests = module.buildFunctionBridges() val bridgeRequests = module.buildFunctionBridges()
module.dumpResultToFiles(bridgeRequests, output) module.dumpResultToFiles(bridgeRequests, output)
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.platform.konan.NativePlatforms
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.sir.SirModule import org.jetbrains.kotlin.sir.SirModule
import org.jetbrains.kotlin.sir.analysisapi.SirGenerator import org.jetbrains.kotlin.sir.analysisapi.SirGenerator
import org.jetbrains.kotlin.sir.builder.buildImport
import org.jetbrains.kotlin.sir.builder.buildModule import org.jetbrains.kotlin.sir.builder.buildModule
import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportInput import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportInput
@@ -21,6 +22,7 @@ import org.jetbrains.kotlin.swiftexport.standalone.SwiftExportInput
internal fun buildSwiftModule( internal fun buildSwiftModule(
input: SwiftExportInput, input: SwiftExportInput,
shouldSortInputFiles: Boolean, shouldSortInputFiles: Boolean,
bridgeModuleName: String,
): SirModule { ): SirModule {
val session = buildStandaloneAnalysisAPISession { val session = buildStandaloneAnalysisAPISession {
registerProjectService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider()) registerProjectService(KtLifetimeTokenProvider::class.java, KtAlwaysAccessibleLifetimeTokenProvider())
@@ -46,9 +48,13 @@ internal fun buildSwiftModule(
ktFiles = ktFiles.sortedBy { it.name } ktFiles = ktFiles.sortedBy { it.name }
} }
return buildModule { return buildModule {
name = sourceModule.moduleName name = sourceModule.moduleName
val sirFactory = SirGenerator() val sirFactory = SirGenerator()
declarations += buildImport {
moduleName = bridgeModuleName
}
ktFiles.forEach { file -> ktFiles.forEach { file ->
declarations += sirFactory.build(file) declarations += sirFactory.build(file)
} }