From c3725ec8c8410c4e8c81063a3691cfab2e10176a Mon Sep 17 00:00:00 2001 From: Gleb Lukianets Date: Tue, 21 Nov 2023 16:54:22 +0000 Subject: [PATCH] rrn/rd/KT-63266/sir-gen Swift Export: generated sir snapshot Merge-request: KT-MR-13128 Merged-by: Gleb Lukianets --- .../kotlin/sir/analysisapi/SirGenerator.kt | 10 +- .../AbstractKotlinSirContextTest.kt | 17 ++- native/swift/sir/build.gradle.kts | 10 +- .../org/jetbrains/kotlin/sir/SirCallable.kt | 28 +++++ .../jetbrains/kotlin/sir/SirDeclaration.kt | 28 +++++ .../kotlin/sir/SirDeclarationContainer.kt | 26 +++++ .../kotlin/sir/SirDeclarationParent.kt | 14 +++ .../kotlin/sir/SirDeclarationWithName.kt | 29 +++++ .../org/jetbrains/kotlin/sir/SirElement.kt | 63 +++++++++++ .../gen/org/jetbrains/kotlin/sir/SirEnum.kt | 31 ++++++ .../kotlin/sir/SirForeignDeclaration.kt | 28 +++++ .../kotlin/sir/SirForeignFunction.kt | 28 +++++ .../org/jetbrains/kotlin/sir/SirFunction.kt | 31 ++++++ .../gen/org/jetbrains/kotlin/sir/SirModule.kt | 26 +++++ .../kotlin/sir/SirNamedTypeDeclaration.kt | 29 +++++ .../kotlin/sir/builder/SirEnumBuilder.kt | 42 +++++++ .../sir/builder/SirForeignFunctionBuilder.kt | 39 +++++++ .../kotlin/sir/builder/SirFunctionBuilder.kt | 42 +++++++ .../kotlin/sir/builder/SirModuleBuilder.kt | 36 ++++++ .../jetbrains/kotlin/sir/impl/SirEnumImpl.kt | 32 ++++++ .../kotlin/sir/impl/SirForeignFunctionImpl.kt | 29 +++++ .../kotlin/sir/impl/SirFunctionImpl.kt | 29 +++++ .../kotlin/sir/impl/SirModuleImpl.kt | 28 +++++ .../kotlin/sir/visitors/SirTransformer.kt | 104 ++++++++++++++++++ .../kotlin/sir/visitors/SirVisitor.kt | 49 +++++++++ .../org/jetbrains/kotlin/sir/SirBuilderDsl.kt | 9 ++ .../org/jetbrains/kotlin/sir/SirElement.kt | 21 ---- .../jetbrains/kotlin/sir/SirElementBase.kt | 15 +++ .../org/jetbrains/kotlin/sir/SirEnumCase.kt | 11 ++ .../kotlin/sir/SirImplementationDetail.kt | 10 ++ .../src/org/jetbrains/kotlin/sir/SirOrigin.kt | 8 ++ .../org/jetbrains/kotlin/sir/SirParameter.kt | 13 +++ .../src/org/jetbrains/kotlin/sir/SirType.kt | 17 +++ .../org/jetbrains/kotlin/sir/SirVisibility.kt | 14 +++ .../jetbrains/kotlin/sir/util/transform.kt | 22 ++++ .../tests/org/jetbrains/kotlin/sir/SirTest.kt | 10 +- 36 files changed, 947 insertions(+), 31 deletions(-) create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirCallable.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclaration.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationContainer.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationParent.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationWithName.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirElement.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirEnum.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignDeclaration.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirForeignFunction.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirFunction.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirModule.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedTypeDeclaration.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirEnumBuilder.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirForeignFunctionBuilder.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirModuleBuilder.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirEnumImpl.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirForeignFunctionImpl.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirFunctionImpl.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirModuleImpl.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirTransformer.kt create mode 100644 native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirVisitor.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirBuilderDsl.kt delete mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirElement.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirElementBase.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirEnumCase.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirImplementationDetail.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirOrigin.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirParameter.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirType.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/SirVisibility.kt create mode 100644 native/swift/sir/src/org/jetbrains/kotlin/sir/util/transform.kt diff --git a/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt b/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt index b596ff26204..58d79724cf3 100644 --- a/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt +++ b/native/swift/sir-analysis-api/src/org/jetbrains/kotlin/sir/analysisapi/SirGenerator.kt @@ -11,8 +11,12 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtTreeVisitorVoid import org.jetbrains.kotlin.psi.psiUtil.isPublic +import org.jetbrains.kotlin.sir.SirOrigin import org.jetbrains.kotlin.sir.SirDeclaration import org.jetbrains.kotlin.sir.SirForeignFunction +import org.jetbrains.kotlin.sir.SirVisibility +import org.jetbrains.kotlin.sir.builder.SirForeignFunctionBuilder +import org.jetbrains.kotlin.sir.builder.buildForeignFunction /** * A root interface for classes that produce Swift IR elements. @@ -36,7 +40,11 @@ class SirGenerator : SirFactory { ?.fqName ?.pathSegments() ?.toListString() - ?.let { names -> SirForeignFunction(fqName = names) } + ?.let { names -> buildForeignFunction { + origin = SirOrigin(path = names) + visibility = SirVisibility.PUBLIC + } + } ?.let { res.add(it) } } } diff --git a/native/swift/sir-analysis-api/tests/org/jetbrains/kotlin/sir/analysisapi/AbstractKotlinSirContextTest.kt b/native/swift/sir-analysis-api/tests/org/jetbrains/kotlin/sir/analysisapi/AbstractKotlinSirContextTest.kt index eec09e96e0f..983f6368b8e 100644 --- a/native/swift/sir-analysis-api/tests/org/jetbrains/kotlin/sir/analysisapi/AbstractKotlinSirContextTest.kt +++ b/native/swift/sir-analysis-api/tests/org/jetbrains/kotlin/sir/analysisapi/AbstractKotlinSirContextTest.kt @@ -12,8 +12,11 @@ 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.SirDeclaration import org.jetbrains.kotlin.sir.SirForeignFunction import org.jetbrains.kotlin.sir.SirModule +import org.jetbrains.kotlin.sir.builder.SirModuleBuilder +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 @@ -46,16 +49,18 @@ abstract class AbstractKotlinSirContextTestBase : AbstractAnalysisApiBasedTest() val ktFiles = moduleStructure.modules .flatMap { testServices.ktModuleProvider.getModuleFiles(it).filterIsInstance() } - val module = SirModule() - val sirFactory = SirGenerator() - ktFiles.forEach { file -> - module.declarations += sirFactory.build(file) - } + val module = buildModule() { + val sirFactory = SirGenerator() + ktFiles.forEach { file -> + declarations += sirFactory.build(file) + } + }.build() + val actual = buildString { module.declarations .filterIsInstance() .forEach { - appendLine("${it.fqName}") + appendLine("${it.origin.path}") } } diff --git a/native/swift/sir/build.gradle.kts b/native/swift/sir/build.gradle.kts index ba80eb032a1..4f91d82ca74 100644 --- a/native/swift/sir/build.gradle.kts +++ b/native/swift/sir/build.gradle.kts @@ -7,11 +7,17 @@ description = "Swift Intermediate Representation" dependencies { compileOnly(kotlinStdlib()) - testImplementation(libs.junit4) + testApi(platform(libs.junit.bom)) + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.jupiter.engine) + testImplementation(projectTests(":compiler:tests-common")) } sourceSets { - "main" { projectDefault() } + "main" { + projectDefault() + generatedDir() + } "test" { projectDefault() } } \ No newline at end of file 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 00000000000..dcbaabf0a52 --- /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 accept(visitor: SirVisitor, data: D): R = + visitor.visitCallable(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..827f4f64dd0 --- /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 accept(visitor: SirVisitor, data: D): R = + visitor.visitDeclaration(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..f68788efdb4 --- /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 + + override fun accept(visitor: SirVisitor, data: D): R = + visitor.visitDeclarationContainer(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..ee21cb03dcb --- /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/SirDeclarationWithName.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationWithName.kt new file mode 100644 index 00000000000..4b014a02faa --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirDeclarationWithName.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.declarationWithName] + */ +sealed interface SirDeclarationWithName : SirDeclaration { + override val origin: SirOrigin + override val visibility: SirVisibility + override var parent: SirDeclarationParent + val name: String + + override fun accept(visitor: SirVisitor, data: D): R = + visitor.visitDeclarationWithName(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, data: D): E = + transformer.transformDeclarationWithName(this, data) as E +} 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 00000000000..0031c89f1d5 --- /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 accept(visitor: SirVisitor, 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 transform(transformer: SirTransformer, 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 acceptChildren(visitor: SirVisitor, 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 transformChildren(transformer: SirTransformer, 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 00000000000..a49aeb5d606 --- /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(), SirNamedTypeDeclaration { + 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 + abstract val cases: List + + override fun accept(visitor: SirVisitor, data: D): R = + visitor.visitEnum(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..5eb2ee3e17c --- /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 accept(visitor: SirVisitor, data: D): R = + visitor.visitForeignDeclaration(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..3ebdb8639ce --- /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 accept(visitor: SirVisitor, data: D): R = + visitor.visitForeignFunction(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..44b1a70be32 --- /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 + abstract val returnType: SirType + + override fun accept(visitor: SirVisitor, data: D): R = + visitor.visitFunction(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, 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 00000000000..142c0b692a3 --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirModule.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.module] + */ +abstract class SirModule : SirDeclarationContainer() { + abstract override val declarations: List + + override fun accept(visitor: SirVisitor, data: D): R = + visitor.visitModule(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, data: D): E = + transformer.transformModule(this, data) as E +} diff --git a/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedTypeDeclaration.kt b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedTypeDeclaration.kt new file mode 100644 index 00000000000..c061b12e1d0 --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/SirNamedTypeDeclaration.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.namedTypeDeclaration] + */ +sealed interface SirNamedTypeDeclaration : SirDeclarationWithName { + override val origin: SirOrigin + override val visibility: SirVisibility + override var parent: SirDeclarationParent + override val name: String + + override fun accept(visitor: SirVisitor, data: D): R = + visitor.visitNamedTypeDeclaration(this, data) + + @Suppress("UNCHECKED_CAST") + override fun transform(transformer: SirTransformer, data: D): E = + transformer.transformNamedTypeDeclaration(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 00000000000..e53b195fddb --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirEnumBuilder.kt @@ -0,0 +1,42 @@ +/* + * 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 { + lateinit var origin: SirOrigin + lateinit var visibility: SirVisibility + lateinit var name: String + val declarations: MutableList = mutableListOf() + val cases: MutableList = 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() +} 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 00000000000..abf5da70a1e --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirForeignFunctionBuilder.kt @@ -0,0 +1,39 @@ +/* + * 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.SirOrigin +import org.jetbrains.kotlin.sir.SirBuilderDsl +import org.jetbrains.kotlin.sir.SirForeignFunction +import org.jetbrains.kotlin.sir.SirVisibility +import org.jetbrains.kotlin.sir.impl.SirForeignFunctionImpl + +@SirBuilderDsl +class SirForeignFunctionBuilder { + lateinit var origin: SirOrigin + lateinit var visibility: SirVisibility + + 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() +} 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 00000000000..ac7278de99f --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirFunctionBuilder.kt @@ -0,0 +1,42 @@ +/* + * 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 { + lateinit var origin: SirOrigin + lateinit var visibility: SirVisibility + lateinit var name: String + val parameters: MutableList = 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() +} 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 00000000000..ebabc25af8e --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/builder/SirModuleBuilder.kt @@ -0,0 +1,36 @@ +/* + * 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 = mutableListOf() + + fun build(): SirModule { + return SirModuleImpl( + declarations, + ) + } +} + +@OptIn(ExperimentalContracts::class) +inline fun buildModule(init: SirModuleBuilder.() -> Unit = {}): SirModule { + contract { + callsInPlace(init, InvocationKind.EXACTLY_ONCE) + } + return SirModuleBuilder().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 00000000000..908d28cfdcb --- /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, + override val cases: MutableList, +) : SirEnum() { + override lateinit var parent: SirDeclarationParent + + override fun acceptChildren(visitor: SirVisitor, data: D) { + declarations.forEach { it.accept(visitor, data) } + } + + override fun transformChildren(transformer: SirTransformer, 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 00000000000..4d155a9e1cd --- /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.SirOrigin +import org.jetbrains.kotlin.sir.SirDeclarationParent +import org.jetbrains.kotlin.sir.SirForeignFunction +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 acceptChildren(visitor: SirVisitor, data: D) { + } + + override fun transformChildren(transformer: SirTransformer, 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 00000000000..dca0db2331b --- /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, + override val returnType: SirType, +) : SirFunction() { + override lateinit var parent: SirDeclarationParent + + override fun acceptChildren(visitor: SirVisitor, data: D) { + } + + override fun transformChildren(transformer: SirTransformer, 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 00000000000..fd7262d49ea --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/impl/SirModuleImpl.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.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, +) : SirModule() { + + override fun acceptChildren(visitor: SirVisitor, data: D) { + declarations.forEach { it.accept(visitor, data) } + } + + override fun transformChildren(transformer: SirTransformer, 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 00000000000..6e81dc8b5df --- /dev/null +++ b/native/swift/sir/gen/org/jetbrains/kotlin/sir/visitors/SirTransformer.kt @@ -0,0 +1,104 @@ +/* + * 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 : SirVisitor() { + + abstract fun 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 transformDeclarationWithName(declarationWithName: SirDeclarationWithName, data: D): SirDeclaration { + return transformElement(declarationWithName, data) + } + + final override fun visitDeclarationWithName(declarationWithName: SirDeclarationWithName, data: D): SirDeclaration { + return transformDeclarationWithName(declarationWithName, data) + } + + open fun transformNamedTypeDeclaration(namedTypeDeclaration: SirNamedTypeDeclaration, data: D): SirDeclaration { + return transformElement(namedTypeDeclaration, data) + } + + final override fun visitNamedTypeDeclaration(namedTypeDeclaration: SirNamedTypeDeclaration, data: D): SirDeclaration { + return transformNamedTypeDeclaration(namedTypeDeclaration, 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 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 00000000000..5f7649f2477 --- /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 { + + 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 visitDeclarationWithName(declarationWithName: SirDeclarationWithName, data: D): R = + visitDeclaration(declarationWithName, data) + + open fun visitNamedTypeDeclaration(namedTypeDeclaration: SirNamedTypeDeclaration, data: D): R = + visitDeclarationWithName(namedTypeDeclaration, data) + + open fun visitEnum(enum: SirEnum, data: D): R = + visitNamedTypeDeclaration(enum, 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/src/org/jetbrains/kotlin/sir/SirBuilderDsl.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirBuilderDsl.kt new file mode 100644 index 00000000000..db35b071092 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirBuilderDsl.kt @@ -0,0 +1,9 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +@DslMarker +annotation class SirBuilderDsl diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirElement.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirElement.kt deleted file mode 100644 index 285ce08b9a6..00000000000 --- a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirElement.kt +++ /dev/null @@ -1,21 +0,0 @@ -/* - * 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. - */ - -package org.jetbrains.kotlin.sir - -/** - * A marker interface that denotes Swift IR elements. - */ -interface SirElement { -} - -class SirModule : SirElement { - val declarations: MutableList = - mutableListOf() -} - -interface SirDeclaration - -class SirForeignFunction(val fqName: List) : SirDeclaration diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirElementBase.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirElementBase.kt new file mode 100644 index 00000000000..a0635999299 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirElementBase.kt @@ -0,0 +1,15 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +import org.jetbrains.kotlin.sir.visitors.SirVisitor +import org.jetbrains.kotlin.sir.visitors.SirTransformer + +sealed class SirElementBase : SirElement { + abstract override fun accept(visitor: SirVisitor, data: D): R + + abstract override fun transform(transformer: SirTransformer, data: D): E +} diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirEnumCase.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirEnumCase.kt new file mode 100644 index 00000000000..859d21518d6 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirEnumCase.kt @@ -0,0 +1,11 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +class SirEnumCase( + val name: String, + val parameters: List +) \ No newline at end of file diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirImplementationDetail.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirImplementationDetail.kt new file mode 100644 index 00000000000..ba8e69003d9 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirImplementationDetail.kt @@ -0,0 +1,10 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +@Suppress("unused") +@RequiresOptIn(level = RequiresOptIn.Level.ERROR) +annotation class SirImplementationDetail diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirOrigin.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirOrigin.kt new file mode 100644 index 00000000000..9b9e6bac767 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirOrigin.kt @@ -0,0 +1,8 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +data class SirOrigin(val path: List) \ No newline at end of file diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirParameter.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirParameter.kt new file mode 100644 index 00000000000..785b88ec30b --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirParameter.kt @@ -0,0 +1,13 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +data class SirParameter( + val argumentName: String? = null, // external function parameter (argument) name + val parameterName: String? = null, // internal function parameter name + val type: SirType, + /* TODO: val defaultValue: Expression? = null, */ +) \ No newline at end of file diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirType.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirType.kt new file mode 100644 index 00000000000..7f6b8de7575 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirType.kt @@ -0,0 +1,17 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir + +sealed interface SirType + +class SirNominalType( + val type: SirNamedTypeDeclaration, + val parent: SirNominalType? = null, +) : SirType + +class SirExistentialType( + // TODO: Protocols. For now, only `any Any` is supported +) : SirType diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/SirVisibility.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirVisibility.kt new file mode 100644 index 00000000000..6ec89c08689 --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/SirVisibility.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. + */ + +package org.jetbrains.kotlin.sir + +enum class SirVisibility { + PRIVATE, + FILEPRIVATE, + INTERNAL, + PUBLIC, + PACKAGE, +} \ No newline at end of file diff --git a/native/swift/sir/src/org/jetbrains/kotlin/sir/util/transform.kt b/native/swift/sir/src/org/jetbrains/kotlin/sir/util/transform.kt new file mode 100644 index 00000000000..ced940a3f2f --- /dev/null +++ b/native/swift/sir/src/org/jetbrains/kotlin/sir/util/transform.kt @@ -0,0 +1,22 @@ +/* + * 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. + */ + +package org.jetbrains.kotlin.sir.util + +import org.jetbrains.kotlin.sir.SirElement +import org.jetbrains.kotlin.sir.SirElementBase +import org.jetbrains.kotlin.sir.visitors.SirTransformer + +// FIXME: Copy-pasted from FIR, use auto-generation instead. +fun MutableList.transformInPlace(transformer: SirTransformer, data: D) { + val iterator = this.listIterator() + while (iterator.hasNext()) { + val next = iterator.next() as SirElementBase + val result = next.transform(transformer, data) + if (result !== next) { + iterator.set(result) + } + } +} diff --git a/native/swift/sir/tests/org/jetbrains/kotlin/sir/SirTest.kt b/native/swift/sir/tests/org/jetbrains/kotlin/sir/SirTest.kt index 2868b552b7f..25547877c9b 100644 --- a/native/swift/sir/tests/org/jetbrains/kotlin/sir/SirTest.kt +++ b/native/swift/sir/tests/org/jetbrains/kotlin/sir/SirTest.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.sir +import org.jetbrains.kotlin.sir.builder.SirEnumBuilder +import org.jetbrains.kotlin.sir.builder.buildEnum import org.junit.Test import kotlin.test.assertTrue @@ -14,10 +16,16 @@ class SirTest { @Test fun exampleTest() { val fakeElement = produceSwiftElement() + + println(fakeElement) assertTrue(fakeElement is SirElement) } private fun produceSwiftElement(): Any { - return object : SirElement {} + return buildEnum { + origin = SirOrigin(path = listOf()) + name = "name" + visibility = SirVisibility.PUBLIC + } } } \ No newline at end of file