[Swift Export]: KT-63280: Package inflation

Merge-request: KT-MR-13331
Merged-by: Gleb Lukianets <Gleb.Lukianets@jetbrains.com>
This commit is contained in:
Gleb Lukianets
2023-12-12 16:05:22 +00:00
committed by Space Team
parent 0b1c4b836a
commit 64ebec7955
17 changed files with 644 additions and 116 deletions
@@ -13,29 +13,27 @@ import org.jetbrains.kotlin.sir.*
import org.jetbrains.kotlin.sir.builder.buildForeignFunction
internal fun KtNamedFunction.toForeignFunction(): SirForeignFunction = buildForeignFunction {
origin = SirOrigin.ForeignEntity(
AAFunction(this@toForeignFunction)
)
origin = AAFunction(this@toForeignFunction)
}
private fun KtValueParameterSymbol.toSirParam(): KotlinParameter = AAParameter(
private fun KtValueParameterSymbol.toSirParam(): SirKotlinOrigin.Parameter = AAParameter(
name = name.toString(),
type = AAKotlinType(name = returnType.toString())
)
private class AAFunction(
private val originalFunction: KtNamedFunction
) : KotlinFunction {
) : SirKotlinOrigin.Function {
override val fqName: List<String>
get() = originalFunction.fqName?.pathSegments()?.toListString() ?: emptyList()
override val parameters: List<KotlinParameter>
override val parameters: List<SirKotlinOrigin.Parameter>
get() = analyze(originalFunction) {
val function = originalFunction.getFunctionLikeSymbol()
function.valueParameters.map { it.toSirParam() }
}
override val returnType: KotlinType
override val returnType: SirKotlinOrigin.Type
get() = analyze(originalFunction) {
val function = originalFunction.getFunctionLikeSymbol()
AAKotlinType(name = function.returnType.toString())
@@ -44,11 +42,11 @@ private class AAFunction(
}
private data class AAParameter(
override val name: String,
override val type: KotlinType
) : KotlinParameter
override val type: SirKotlinOrigin.Type
) : SirKotlinOrigin.Parameter
private data class AAKotlinType(
override val name: String
) : KotlinType
) : SirKotlinOrigin.Type
private fun List<Name>.toListString() = map { it.asString() }
@@ -10,13 +10,11 @@ import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBase
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
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.SirForeignFunction
import org.jetbrains.kotlin.sir.KotlinFunction
import org.jetbrains.kotlin.sir.SirKotlinOrigin
import org.jetbrains.kotlin.sir.SirOrigin
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
import org.jetbrains.kotlin.test.services.assertions
@@ -50,7 +48,7 @@ abstract class AbstractKotlinSirContextTestBase : AbstractAnalysisApiBasedTest()
module.declarations
.filterIsInstance<SirForeignFunction>()
.forEach {
val function = (it.origin as SirOrigin.ForeignEntity).entity as KotlinFunction
val function = it.origin as SirKotlinOrigin.Function
appendLine("${function.fqName}")
}
}