Regen + copy builders
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirCallable.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirCallable.kt
new file mode 100644
index 0000000..dcbaabf
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirCallable.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.callable]
+ */
+sealed interface SirCallable : SirDeclaration {
+ override val origin: SirOrigin
+ override val visibility: SirVisibility
+ override var parent: SirDeclarationParent
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitCallable(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformCallable(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclaration.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclaration.kt
new file mode 100644
index 0000000..827f4f6
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclaration.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.declaration]
+ */
+sealed interface SirDeclaration : SirElement {
+ val origin: SirOrigin
+ val visibility: SirVisibility
+ var parent: SirDeclarationParent
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitDeclaration(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformDeclaration(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationContainer.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationContainer.kt
new file mode 100644
index 0000000..f68788e
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationContainer.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.declarationContainer]
+ */
+sealed class SirDeclarationContainer : SirDeclarationParent() {
+ abstract val declarations: List<SirDeclaration>
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitDeclarationContainer(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformDeclarationContainer(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationParent.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationParent.kt
new file mode 100644
index 0000000..ee21cb0
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationParent.kt
@@ -0,0 +1,14 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.declarationParent]
+ */
+sealed class SirDeclarationParent : SirElementBase(), SirElement
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirElement.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirElement.kt
new file mode 100644
index 0000000..0031c89
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirElement.kt
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * The root interface of the Swift IR tree.
+ *
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.rootElement]
+ */
+sealed interface SirElement {
+ /**
+ * Runs the provided [visitor] on the Swift IR subtree with the root at this node.
+ *
+ * @param visitor The visitor to accept.
+ * @param data An arbitrary context to pass to each invocation of [visitor]'s methods.
+ * @return The value returned by the topmost `visit*` invocation.
+ */
+ fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R
+
+ /**
+ * Runs the provided [transformer] on the Swift IR subtree with the root at this node.
+ *
+ * @param transformer The transformer to use.
+ * @param data An arbitrary context to pass to each invocation of [transformer]'s methods.
+ * @return The transformed node.
+ */
+ @Suppress("UNCHECKED_CAST")
+ fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformElement(this, data) as E
+
+ /**
+ * Runs the provided [visitor] on subtrees with roots in this node's children.
+ *
+ * Basically, calls `accept(visitor, data)` on each child of this node.
+ *
+ * Does **not** run [visitor] on this node itself.
+ *
+ * @param visitor The visitor for children to accept.
+ * @param data An arbitrary context to pass to each invocation of [visitor]'s methods.
+ */
+ fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D)
+
+ /**
+ * Recursively transforms this node's children *in place* using [transformer].
+ *
+ * Basically, executes `this.child = this.child.transform(transformer, data)` for each child of this node.
+ *
+ * Does **not** run [transformer] on this node itself.
+ *
+ * @param transformer The transformer to use for transforming the children.
+ * @param data An arbitrary context to pass to each invocation of [transformer]'s methods.
+ */
+ fun <D> transformChildren(transformer: SirTransformer<D>, data: D)
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirEnum.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirEnum.kt
new file mode 100644
index 0000000..24772d6
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirEnum.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.enum]
+ */
+abstract class SirEnum : SirDeclarationContainer(), SirNamedDeclaration {
+ abstract override val origin: SirOrigin
+ abstract override val visibility: SirVisibility
+ abstract override var parent: SirDeclarationParent
+ abstract override val name: String
+ abstract override val declarations: List<SirDeclaration>
+ abstract val cases: List<SirEnumCase>
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitEnum(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformEnum(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignDeclaration.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignDeclaration.kt
new file mode 100644
index 0000000..5eb2ee3
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignDeclaration.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.foreignDeclaration]
+ */
+sealed class SirForeignDeclaration : SirElementBase(), SirDeclaration {
+ abstract override val origin: SirOrigin
+ abstract override val visibility: SirVisibility
+ abstract override var parent: SirDeclarationParent
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitForeignDeclaration(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformForeignDeclaration(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignFunction.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignFunction.kt
new file mode 100644
index 0000000..3ebdb86
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignFunction.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.foreignFunction]
+ */
+abstract class SirForeignFunction : SirForeignDeclaration(), SirCallable {
+ abstract override val origin: SirOrigin
+ abstract override val visibility: SirVisibility
+ abstract override var parent: SirDeclarationParent
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitForeignFunction(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformForeignFunction(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt
new file mode 100644
index 0000000..44b1a70b
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.function]
+ */
+abstract class SirFunction : SirElementBase(), SirCallable {
+ abstract override val origin: SirOrigin
+ abstract override val visibility: SirVisibility
+ abstract override var parent: SirDeclarationParent
+ abstract val name: String
+ abstract val parameters: List<SirParameter>
+ abstract val returnType: SirType
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitFunction(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformFunction(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirModule.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirModule.kt
new file mode 100644
index 0000000..ba65684
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirModule.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.module]
+ */
+abstract class SirModule : SirDeclarationContainer(), SirNamed {
+ abstract override val declarations: List<SirDeclaration>
+ abstract override val name: String
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitModule(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformModule(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamed.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamed.kt
new file mode 100644
index 0000000..2367174
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamed.kt
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.named]
+ */
+sealed interface SirNamed : SirElement {
+ val name: String
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedDeclaration.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedDeclaration.kt
new file mode 100644
index 0000000..3d45727
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedDeclaration.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.namedDeclaration]
+ */
+sealed interface SirNamedDeclaration : SirDeclaration, SirNamed {
+ override val origin: SirOrigin
+ override val visibility: SirVisibility
+ override var parent: SirDeclarationParent
+ override val name: String
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitNamedDeclaration(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformNamedDeclaration(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirStruct.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirStruct.kt
new file mode 100644
index 0000000..d85c215
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirStruct.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir
+
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+/**
+ * Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.struct]
+ */
+abstract class SirStruct : SirDeclarationContainer(), SirNamedDeclaration {
+ abstract override val origin: SirOrigin
+ abstract override val visibility: SirVisibility
+ abstract override var parent: SirDeclarationParent
+ abstract override val name: String
+ abstract override val declarations: List<SirDeclaration>
+
+ override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
+ visitor.visitStruct(this, data)
+
+ @Suppress("UNCHECKED_CAST")
+ override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
+ transformer.transformStruct(this, data) as E
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirEnumBuilder.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirEnumBuilder.kt
new file mode 100644
index 0000000..b9137c4
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirEnumBuilder.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+@file:Suppress("DuplicatedCode", "unused")
+
+package org.jetbrains.kotlin.sir.builder
+
+import kotlin.contracts.*
+import org.jetbrains.kotlin.sir.*
+import org.jetbrains.kotlin.sir.impl.SirEnumImpl
+
+@SirBuilderDsl
+class SirEnumBuilder {
+ var origin: SirOrigin = SirOrigin.Unknown
+ var visibility: SirVisibility = SirVisibility.PUBLIC
+ lateinit var name: String
+ val declarations: MutableList<SirDeclaration> = mutableListOf()
+ val cases: MutableList<SirEnumCase> = mutableListOf()
+
+ fun build(): SirEnum {
+ return SirEnumImpl(
+ origin,
+ visibility,
+ name,
+ declarations,
+ cases,
+ )
+ }
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildEnum(init: SirEnumBuilder.() -> Unit): SirEnum {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ return SirEnumBuilder().apply(init).build()
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildEnumCopy(original: SirEnum, init: SirEnumBuilder.() -> Unit): SirEnum {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ val copyBuilder = SirEnumBuilder()
+ copyBuilder.origin = original.origin
+ copyBuilder.visibility = original.visibility
+ copyBuilder.name = original.name
+ copyBuilder.declarations.addAll(original.declarations)
+ copyBuilder.cases.addAll(original.cases)
+ return copyBuilder.apply(init).build()
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirForeignFunctionBuilder.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirForeignFunctionBuilder.kt
new file mode 100644
index 0000000..3dc451c
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirForeignFunctionBuilder.kt
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+@file:Suppress("DuplicatedCode", "unused")
+
+package org.jetbrains.kotlin.sir.builder
+
+import kotlin.contracts.*
+import org.jetbrains.kotlin.sir.SirBuilderDsl
+import org.jetbrains.kotlin.sir.SirForeignFunction
+import org.jetbrains.kotlin.sir.SirOrigin
+import org.jetbrains.kotlin.sir.SirVisibility
+import org.jetbrains.kotlin.sir.impl.SirForeignFunctionImpl
+
+@SirBuilderDsl
+class SirForeignFunctionBuilder {
+ var origin: SirOrigin = SirOrigin.Unknown
+ var visibility: SirVisibility = SirVisibility.PUBLIC
+
+ fun build(): SirForeignFunction {
+ return SirForeignFunctionImpl(
+ origin,
+ visibility,
+ )
+ }
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildForeignFunction(init: SirForeignFunctionBuilder.() -> Unit = {}): SirForeignFunction {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ return SirForeignFunctionBuilder().apply(init).build()
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildForeignFunctionCopy(original: SirForeignFunction, init: SirForeignFunctionBuilder.() -> Unit = {}): SirForeignFunction {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ val copyBuilder = SirForeignFunctionBuilder()
+ copyBuilder.origin = original.origin
+ copyBuilder.visibility = original.visibility
+ return copyBuilder.apply(init).build()
+}
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
new file mode 100644
index 0000000..f0c48ce
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+@file:Suppress("DuplicatedCode", "unused")
+
+package org.jetbrains.kotlin.sir.builder
+
+import kotlin.contracts.*
+import org.jetbrains.kotlin.sir.*
+import org.jetbrains.kotlin.sir.impl.SirFunctionImpl
+
+@SirBuilderDsl
+class SirFunctionBuilder {
+ var origin: SirOrigin = SirOrigin.Unknown
+ var visibility: SirVisibility = SirVisibility.PUBLIC
+ lateinit var name: String
+ val parameters: MutableList<SirParameter> = mutableListOf()
+ lateinit var returnType: SirType
+
+ fun build(): SirFunction {
+ return SirFunctionImpl(
+ origin,
+ visibility,
+ name,
+ parameters,
+ returnType,
+ )
+ }
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildFunction(init: SirFunctionBuilder.() -> Unit): SirFunction {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ return SirFunctionBuilder().apply(init).build()
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildFunctionCopy(original: SirFunction, init: SirFunctionBuilder.() -> Unit): SirFunction {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ val copyBuilder = SirFunctionBuilder()
+ copyBuilder.origin = original.origin
+ copyBuilder.visibility = original.visibility
+ copyBuilder.name = original.name
+ copyBuilder.parameters.addAll(original.parameters)
+ copyBuilder.returnType = original.returnType
+ return copyBuilder.apply(init).build()
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirModuleBuilder.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirModuleBuilder.kt
new file mode 100644
index 0000000..e2a841e
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirModuleBuilder.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+@file:Suppress("DuplicatedCode", "unused")
+
+package org.jetbrains.kotlin.sir.builder
+
+import kotlin.contracts.*
+import org.jetbrains.kotlin.sir.SirBuilderDsl
+import org.jetbrains.kotlin.sir.SirDeclaration
+import org.jetbrains.kotlin.sir.SirModule
+import org.jetbrains.kotlin.sir.impl.SirModuleImpl
+
+@SirBuilderDsl
+class SirModuleBuilder {
+ val declarations: MutableList<SirDeclaration> = mutableListOf()
+ lateinit var name: String
+
+ fun build(): SirModule {
+ return SirModuleImpl(
+ declarations,
+ name,
+ )
+ }
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildModule(init: SirModuleBuilder.() -> Unit): SirModule {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ return SirModuleBuilder().apply(init).build()
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildModuleCopy(original: SirModule, init: SirModuleBuilder.() -> Unit): SirModule {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ val copyBuilder = SirModuleBuilder()
+ copyBuilder.declarations.addAll(original.declarations)
+ copyBuilder.name = original.name
+ return copyBuilder.apply(init).build()
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirStructBuilder.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirStructBuilder.kt
new file mode 100644
index 0000000..aa7c0b3
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirStructBuilder.kt
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+@file:Suppress("DuplicatedCode", "unused")
+
+package org.jetbrains.kotlin.sir.builder
+
+import kotlin.contracts.*
+import org.jetbrains.kotlin.sir.*
+import org.jetbrains.kotlin.sir.impl.SirStructImpl
+
+@SirBuilderDsl
+class SirStructBuilder {
+ var origin: SirOrigin = SirOrigin.Unknown
+ var visibility: SirVisibility = SirVisibility.PUBLIC
+ lateinit var name: String
+ val declarations: MutableList<SirDeclaration> = mutableListOf()
+
+ fun build(): SirStruct {
+ return SirStructImpl(
+ origin,
+ visibility,
+ name,
+ declarations,
+ )
+ }
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildStruct(init: SirStructBuilder.() -> Unit): SirStruct {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ return SirStructBuilder().apply(init).build()
+}
+
+@OptIn(ExperimentalContracts::class)
+inline fun buildStructCopy(original: SirStruct, init: SirStructBuilder.() -> Unit): SirStruct {
+ contract {
+ callsInPlace(init, InvocationKind.EXACTLY_ONCE)
+ }
+ val copyBuilder = SirStructBuilder()
+ copyBuilder.origin = original.origin
+ copyBuilder.visibility = original.visibility
+ copyBuilder.name = original.name
+ copyBuilder.declarations.addAll(original.declarations)
+ return copyBuilder.apply(init).build()
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirEnumImpl.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirEnumImpl.kt
new file mode 100644
index 0000000..908d28c
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirEnumImpl.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.impl
+
+import org.jetbrains.kotlin.sir.*
+import org.jetbrains.kotlin.sir.util.transformInPlace
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+internal class SirEnumImpl(
+ override val origin: SirOrigin,
+ override val visibility: SirVisibility,
+ override val name: String,
+ override val declarations: MutableList<SirDeclaration>,
+ override val cases: MutableList<SirEnumCase>,
+) : SirEnum() {
+ override lateinit var parent: SirDeclarationParent
+
+ override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
+ declarations.forEach { it.accept(visitor, data) }
+ }
+
+ override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
+ declarations.transformInPlace(transformer, data)
+ }
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirForeignFunctionImpl.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirForeignFunctionImpl.kt
new file mode 100644
index 0000000..c94482f
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirForeignFunctionImpl.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.impl
+
+import org.jetbrains.kotlin.sir.SirDeclarationParent
+import org.jetbrains.kotlin.sir.SirForeignFunction
+import org.jetbrains.kotlin.sir.SirOrigin
+import org.jetbrains.kotlin.sir.SirVisibility
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+internal class SirForeignFunctionImpl(
+ override val origin: SirOrigin,
+ override val visibility: SirVisibility,
+) : SirForeignFunction() {
+ override lateinit var parent: SirDeclarationParent
+
+ override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
+ }
+
+ override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
+ }
+}
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
new file mode 100644
index 0000000..dca0db2
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirFunctionImpl.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.impl
+
+import org.jetbrains.kotlin.sir.*
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+internal class SirFunctionImpl(
+ override val origin: SirOrigin,
+ override val visibility: SirVisibility,
+ override val name: String,
+ override val parameters: MutableList<SirParameter>,
+ override val returnType: SirType,
+) : SirFunction() {
+ override lateinit var parent: SirDeclarationParent
+
+ override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
+ }
+
+ override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
+ }
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirModuleImpl.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirModuleImpl.kt
new file mode 100644
index 0000000..4376a9d
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirModuleImpl.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.impl
+
+import org.jetbrains.kotlin.sir.SirDeclaration
+import org.jetbrains.kotlin.sir.SirModule
+import org.jetbrains.kotlin.sir.util.transformInPlace
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+internal class SirModuleImpl(
+ override val declarations: MutableList<SirDeclaration>,
+ override val name: String,
+) : SirModule() {
+
+ override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
+ declarations.forEach { it.accept(visitor, data) }
+ }
+
+ override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
+ declarations.transformInPlace(transformer, data)
+ }
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirStructImpl.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirStructImpl.kt
new file mode 100644
index 0000000..e0c641b
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirStructImpl.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.impl
+
+import org.jetbrains.kotlin.sir.*
+import org.jetbrains.kotlin.sir.util.transformInPlace
+import org.jetbrains.kotlin.sir.visitors.SirTransformer
+import org.jetbrains.kotlin.sir.visitors.SirVisitor
+
+internal class SirStructImpl(
+ override val origin: SirOrigin,
+ override val visibility: SirVisibility,
+ override val name: String,
+ override val declarations: MutableList<SirDeclaration>,
+) : SirStruct() {
+ override lateinit var parent: SirDeclarationParent
+
+ override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
+ declarations.forEach { it.accept(visitor, data) }
+ }
+
+ override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
+ declarations.transformInPlace(transformer, data)
+ }
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirTransformer.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirTransformer.kt
new file mode 100644
index 0000000..9b5eed5
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirTransformer.kt
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.visitors
+
+import org.jetbrains.kotlin.sir.*
+
+/**
+ * Auto-generated by [org.jetbrains.kotlin.sir.tree.generator.printer.TransformerPrinter]
+ */
+abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
+
+ abstract fun <E : SirElement> transformElement(element: E, data: D): E
+
+ final override fun visitElement(element: SirElement, data: D): SirElement {
+ return transformElement(element, data)
+ }
+
+ open fun transformModule(module: SirModule, data: D): SirModule {
+ return transformElement(module, data)
+ }
+
+ final override fun visitModule(module: SirModule, data: D): SirModule {
+ return transformModule(module, data)
+ }
+
+
+ open fun transformDeclarationContainer(declarationContainer: SirDeclarationContainer, data: D): SirDeclarationContainer {
+ return transformElement(declarationContainer, data)
+ }
+
+ final override fun visitDeclarationContainer(declarationContainer: SirDeclarationContainer, data: D): SirDeclarationContainer {
+ return transformDeclarationContainer(declarationContainer, data)
+ }
+
+ open fun transformDeclaration(declaration: SirDeclaration, data: D): SirDeclaration {
+ return transformElement(declaration, data)
+ }
+
+ final override fun visitDeclaration(declaration: SirDeclaration, data: D): SirDeclaration {
+ return transformDeclaration(declaration, data)
+ }
+
+ open fun transformForeignDeclaration(foreignDeclaration: SirForeignDeclaration, data: D): SirDeclaration {
+ return transformElement(foreignDeclaration, data)
+ }
+
+ final override fun visitForeignDeclaration(foreignDeclaration: SirForeignDeclaration, data: D): SirDeclaration {
+ return transformForeignDeclaration(foreignDeclaration, data)
+ }
+
+
+ open fun transformNamedDeclaration(namedDeclaration: SirNamedDeclaration, data: D): SirDeclaration {
+ return transformElement(namedDeclaration, data)
+ }
+
+ final override fun visitNamedDeclaration(namedDeclaration: SirNamedDeclaration, data: D): SirDeclaration {
+ return transformNamedDeclaration(namedDeclaration, data)
+ }
+
+ open fun transformEnum(enum: SirEnum, data: D): SirDeclaration {
+ return transformElement(enum, data)
+ }
+
+ final override fun visitEnum(enum: SirEnum, data: D): SirDeclaration {
+ return transformEnum(enum, data)
+ }
+
+ open fun transformStruct(struct: SirStruct, data: D): SirDeclaration {
+ return transformElement(struct, data)
+ }
+
+ final override fun visitStruct(struct: SirStruct, data: D): SirDeclaration {
+ return transformStruct(struct, data)
+ }
+
+ open fun transformCallable(callable: SirCallable, data: D): SirDeclaration {
+ return transformElement(callable, data)
+ }
+
+ final override fun visitCallable(callable: SirCallable, data: D): SirDeclaration {
+ return transformCallable(callable, data)
+ }
+
+ open fun transformFunction(function: SirFunction, data: D): SirDeclaration {
+ return transformElement(function, data)
+ }
+
+ final override fun visitFunction(function: SirFunction, data: D): SirDeclaration {
+ return transformFunction(function, data)
+ }
+
+ open fun transformForeignFunction(foreignFunction: SirForeignFunction, data: D): SirDeclaration {
+ return transformElement(foreignFunction, data)
+ }
+
+ final override fun visitForeignFunction(foreignFunction: SirForeignFunction, data: D): SirDeclaration {
+ return transformForeignFunction(foreignFunction, data)
+ }
+}
diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirVisitor.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirVisitor.kt
new file mode 100644
index 0000000..7c2cc54
--- /dev/null
+++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirVisitor.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2010-2023 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.
+ */
+
+// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
+// DO NOT MODIFY IT MANUALLY.
+
+package org.jetbrains.kotlin.sir.visitors
+
+import org.jetbrains.kotlin.sir.*
+
+/**
+ * Auto-generated by [org.jetbrains.kotlin.sir.tree.generator.printer.VisitorPrinter]
+ */
+abstract class SirVisitor<out R, in D> {
+
+ abstract fun visitElement(element: SirElement, data: D): R
+
+ open fun visitModule(module: SirModule, data: D): R =
+ visitElement(module, data)
+
+ open fun visitDeclarationContainer(declarationContainer: SirDeclarationContainer, data: D): R =
+ visitElement(declarationContainer, data)
+
+ open fun visitDeclaration(declaration: SirDeclaration, data: D): R =
+ visitElement(declaration, data)
+
+ open fun visitForeignDeclaration(foreignDeclaration: SirForeignDeclaration, data: D): R =
+ visitDeclaration(foreignDeclaration, data)
+
+ open fun visitNamedDeclaration(namedDeclaration: SirNamedDeclaration, data: D): R =
+ visitDeclaration(namedDeclaration, data)
+
+ open fun visitEnum(enum: SirEnum, data: D): R =
+ visitNamedDeclaration(enum, data)
+
+ open fun visitStruct(struct: SirStruct, data: D): R =
+ visitNamedDeclaration(struct, data)
+
+ open fun visitCallable(callable: SirCallable, data: D): R =
+ visitDeclaration(callable, data)
+
+ open fun visitFunction(function: SirFunction, data: D): R =
+ visitCallable(function, data)
+
+ open fun visitForeignFunction(foreignFunction: SirForeignFunction, data: D): R =
+ visitCallable(foreignFunction, data)
+}
diff --git a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/BuilderConfigurator.kt b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/BuilderConfigurator.kt
index 5ccf8ae..2f0c0c4 100644
--- a/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/BuilderConfigurator.kt
+++ b/native/swift/sir/tree-generator/src/org/jetbrains/kotlin/sir/tree/generator/BuilderConfigurator.kt
@@ -5,8 +5,10 @@
package org.jetbrains.kotlin.sir.tree.generator
+import org.jetbrains.kotlin.generators.tree.*
import org.jetbrains.kotlin.sir.tree.generator.config.AbstractSwiftIrTreeBuilderConfigurator
import org.jetbrains.kotlin.sir.tree.generator.model.Element
+import org.jetbrains.kotlin.sir.tree.generator.model.Implementation
class BuilderConfigurator(elements: List<Element>) : AbstractSwiftIrTreeBuilderConfigurator(elements) {
@@ -21,5 +23,23 @@
configureFieldInAllLeafBuilders("visibility") {
default(it, "SirVisibility.PUBLIC")
}
+
+ configureAllLeafBuilders {
+ withCopy()
+ }
}
-}
\ No newline at end of file
+}
+
+//AbstractBuilderConfigurator<Element, Implementation, Field, Field>
+private fun <Element, Implementation, BuilderField, ElementField> AbstractBuilderConfigurator<Element, Implementation, BuilderField, ElementField>.configureAllLeafBuilders(
+ builderPredicate: (LeafBuilder<BuilderField, Element, Implementation>) -> Boolean = { true },
+ init: AbstractBuilderConfigurator<Element, Implementation, BuilderField, ElementField>.LeafBuilderConfigurationContext.() -> Unit,
+) where Element : AbstractElement<Element, ElementField, Implementation>,
+ Implementation : AbstractImplementation<Implementation, Element, BuilderField>,
+ BuilderField : AbstractField<*>,
+ BuilderField : AbstractFieldWithDefaultValue<*>,
+ ElementField : AbstractField<ElementField> = elements
+ .flatMap { it.allImplementations }
+ .mapNotNull { it.builder }
+ .filter(builderPredicate)
+ .forEach { LeafBuilderConfigurationContext(it).init() }
\ No newline at end of file