rrn/rd/KT-63266/sir-gen

Swift Export: generated sir snapshot

Merge-request: KT-MR-13128
Merged-by: Gleb Lukianets <Gleb.Lukianets@jetbrains.com>
This commit is contained in:
Gleb Lukianets
2023-11-21 16:54:22 +00:00
committed by Space Team
parent 1f4099833a
commit c3725ec8c8
36 changed files with 947 additions and 31 deletions
@@ -11,8 +11,12 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
import org.jetbrains.kotlin.psi.psiUtil.isPublic
import org.jetbrains.kotlin.sir.SirOrigin
import org.jetbrains.kotlin.sir.SirDeclaration
import org.jetbrains.kotlin.sir.SirForeignFunction
import org.jetbrains.kotlin.sir.SirVisibility
import org.jetbrains.kotlin.sir.builder.SirForeignFunctionBuilder
import org.jetbrains.kotlin.sir.builder.buildForeignFunction
/**
* A root interface for classes that produce Swift IR elements.
@@ -36,7 +40,11 @@ class SirGenerator : SirFactory {
?.fqName
?.pathSegments()
?.toListString()
?.let { names -> SirForeignFunction(fqName = names) }
?.let { names -> buildForeignFunction {
origin = SirOrigin(path = names)
visibility = SirVisibility.PUBLIC
}
}
?.let { res.add(it) }
}
}
@@ -12,8 +12,11 @@ import org.jetbrains.kotlin.analysis.test.framework.test.configurators.*
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.FrontendKind
import org.jetbrains.kotlin.platform.konan.NativePlatforms
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.sir.SirDeclaration
import org.jetbrains.kotlin.sir.SirForeignFunction
import org.jetbrains.kotlin.sir.SirModule
import org.jetbrains.kotlin.sir.builder.SirModuleBuilder
import org.jetbrains.kotlin.sir.builder.buildModule
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.services.TestModuleStructure
import org.jetbrains.kotlin.test.services.TestServices
@@ -46,16 +49,18 @@ abstract class AbstractKotlinSirContextTestBase : AbstractAnalysisApiBasedTest()
val ktFiles = moduleStructure.modules
.flatMap { testServices.ktModuleProvider.getModuleFiles(it).filterIsInstance<KtFile>() }
val module = SirModule()
val sirFactory = SirGenerator()
ktFiles.forEach { file ->
module.declarations += sirFactory.build(file)
}
val module = buildModule() {
val sirFactory = SirGenerator()
ktFiles.forEach { file ->
declarations += sirFactory.build(file)
}
}.build()
val actual = buildString {
module.declarations
.filterIsInstance<SirForeignFunction>()
.forEach {
appendLine("${it.fqName}")
appendLine("${it.origin.path}")
}
}