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:
@@ -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
|
||||
|
||||
+2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user