diff --git a/native/swift/sir-passes/tests/org/jetbrains/kotlin/sir/passes/mocks/MockSirFunction.kt b/native/swift/sir-passes/tests/org/jetbrains/kotlin/sir/passes/mocks/MockSirFunction.kt index e46baea3a2e..52989e7a6bd 100644 --- a/native/swift/sir-passes/tests/org/jetbrains/kotlin/sir/passes/mocks/MockSirFunction.kt +++ b/native/swift/sir-passes/tests/org/jetbrains/kotlin/sir/passes/mocks/MockSirFunction.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.sir.passes.mocks +import org.jetbrains.kotlin.sir.SirFunctionBody import org.jetbrains.kotlin.sir.* -import org.jetbrains.kotlin.sir.util.SirSwiftModule import org.jetbrains.kotlin.sir.visitors.SirTransformer import org.jetbrains.kotlin.sir.visitors.SirVisitor @@ -20,4 +20,6 @@ class MockSirFunction( ) : SirFunction() { override fun acceptChildren(visitor: SirVisitor, data: D) = Unit override fun transformChildren(transformer: SirTransformer, data: D) = Unit + + override var body: SirFunctionBody? = null } diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt index b698c2c43c0..ea48fee1c56 100644 --- a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt @@ -21,6 +21,7 @@ abstract class SirFunction : SirElementBase(), SirCallable { abstract val name: String abstract val parameters: List abstract val returnType: SirType + abstract var body: SirFunctionBody? override fun accept(visitor: SirVisitor, data: D): R = visitor.visitFunction(this, data) diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt index e2d71a12011..206120ee81b 100644 --- a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt @@ -21,6 +21,7 @@ class SirFunctionBuilder { lateinit var name: String val parameters: MutableList = mutableListOf() lateinit var returnType: SirType + var body: SirFunctionBody? = null fun build(): SirFunction { return SirFunctionImpl( @@ -29,8 +30,10 @@ class SirFunctionBuilder { name, parameters, returnType, + body, ) } + } @OptIn(ExperimentalContracts::class) @@ -52,5 +55,6 @@ inline fun buildFunctionCopy(original: SirFunction, init: SirFunctionBuilder.() copyBuilder.name = original.name copyBuilder.parameters.addAll(original.parameters) copyBuilder.returnType = original.returnType + copyBuilder.body = original.body return copyBuilder.apply(init).build() } diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirFunctionImpl.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirFunctionImpl.kt index 9321c79daf6..bccb7516fa3 100644 --- a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirFunctionImpl.kt +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirFunctionImpl.kt @@ -20,6 +20,7 @@ internal class SirFunctionImpl( override val name: String, override val parameters: MutableList, override val returnType: SirType, + override var body: SirFunctionBody?, ) : SirFunction() { override lateinit var parent: SirDeclarationParent diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirFunctionBody.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirFunctionBody.kt new file mode 100644 index 00000000000..ddac9c01754 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirFunctionBody.kt @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.sir + +class SirFunctionBody { +} \ No newline at end of file diff --git a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt index 01bd77159e1..f2416cd59d4 100644 --- a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt +++ b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/SwiftIrTree.kt @@ -84,6 +84,7 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() { +field("name", string) +listField("parameters", parameterType) +field("returnType", typeType) + +field("body", functionBodyType, nullable = true, mutable = true) } val foreignFunction by element { diff --git a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/Types.kt b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/Types.kt index 38a3bcc84ef..05b0beb4438 100644 --- a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/Types.kt +++ b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/Types.kt @@ -14,6 +14,7 @@ val originType = type(BASE_PACKAGE, "SirOrigin", TypeKind.Class) val parameterType = type(BASE_PACKAGE, "SirParameter", TypeKind.Class) val typeType = type(BASE_PACKAGE, "SirType", TypeKind.Class) val enumCaseType = type(BASE_PACKAGE, "SirEnumCase", TypeKind.Class) +val functionBodyType = type(BASE_PACKAGE, "SirFunctionBody", TypeKind.Class) private const val VISITORS_PACKAGE = "$BASE_PACKAGE.visitors"