KT-64931: add convertion of kotlin top-lvl functions into swift static functions

Merge-request: KT-MR-13878
Merged-by: Artem Olkov <artem.olkov@jetbrains.com>
This commit is contained in:
Artem Olkov
2024-01-17 20:30:04 +00:00
committed by Space Team
parent 01824a336c
commit 37a8723a79
24 changed files with 133 additions and 25 deletions
+2
View File
@@ -9,6 +9,8 @@ description = "Swift Intermediate Representation"
dependencies {
compileOnly(kotlinStdlib())
api(project(":core:compiler.common"))
if (kotlinBuildProperties.isInIdeaSync) {
compileOnly(project("tree-generator")) // Provided, so that IDEA can recognize references to this module in KDoc.
}
@@ -18,6 +18,7 @@ abstract class SirFunction : SirElementBase(), SirCallable {
abstract override val origin: SirOrigin
abstract override val visibility: SirVisibility
abstract override var parent: SirDeclarationParent
abstract val isStatic: Boolean
abstract val name: String
abstract val parameters: List<SirParameter>
abstract val returnType: SirType
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.sir.impl.SirFunctionImpl
class SirFunctionBuilder {
var origin: SirOrigin = SirOrigin.Unknown
var visibility: SirVisibility = SirVisibility.PUBLIC
var isStatic: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
lateinit var name: String
val parameters: MutableList<SirParameter> = mutableListOf()
lateinit var returnType: SirType
@@ -27,6 +28,7 @@ class SirFunctionBuilder {
return SirFunctionImpl(
origin,
visibility,
isStatic,
name,
parameters,
returnType,
@@ -52,6 +54,7 @@ inline fun buildFunctionCopy(original: SirFunction, init: SirFunctionBuilder.()
val copyBuilder = SirFunctionBuilder()
copyBuilder.origin = original.origin
copyBuilder.visibility = original.visibility
copyBuilder.isStatic = original.isStatic
copyBuilder.name = original.name
copyBuilder.parameters.addAll(original.parameters)
copyBuilder.returnType = original.returnType
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.sir.visitors.SirVisitor
internal class SirFunctionImpl(
override val origin: SirOrigin,
override val visibility: SirVisibility,
override val isStatic: Boolean,
override val name: String,
override val parameters: MutableList<SirParameter>,
override val returnType: SirType,
@@ -5,11 +5,13 @@
package org.jetbrains.kotlin.sir
import org.jetbrains.kotlin.name.FqName
sealed interface SirKotlinOrigin : SirOrigin.Foreign {
val fqName: List<String>
val fqName: FqName
override val path: List<String>
get() = fqName
get() = fqName.pathSegments().map { it.asString() }
interface Function : SirKotlinOrigin {
val parameters: List<Parameter>
@@ -24,4 +26,4 @@ sealed interface SirKotlinOrigin : SirOrigin.Foreign {
interface Type {
val name: String
}
}
}
@@ -5,10 +5,11 @@
package org.jetbrains.kotlin.sir.mock
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.sir.SirKotlinOrigin
data class MockFunction(
override val fqName: List<String>,
override val fqName: FqName,
override val parameters: List<SirKotlinOrigin.Parameter>,
override val returnType: SirKotlinOrigin.Type,
) : SirKotlinOrigin.Function
@@ -7,6 +7,7 @@
package org.jetbrains.kotlin.sir.tree.generator
import org.jetbrains.kotlin.generators.tree.StandardTypes.boolean
import org.jetbrains.kotlin.generators.tree.StandardTypes.string
import org.jetbrains.kotlin.sir.tree.generator.config.AbstractSwiftIrTreeBuilder
import org.jetbrains.kotlin.sir.tree.generator.model.Element
@@ -81,6 +82,7 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
customParentInVisitor = callable
parent(callable)
+field("isStatic", boolean) // todo: KT-65046 Method|function distinction in SIR
+field("name", string)
+listField("parameters", parameterType)
+field("returnType", typeType)