[Swift export][KT-65672] Add SIR node for import declaration

This commit is contained in:
Sergey Bogolepov
2024-02-08 17:08:05 +02:00
committed by Space Team
parent f5b273a6d9
commit 10e4d34868
8 changed files with 146 additions and 0 deletions
@@ -0,0 +1,29 @@
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
// 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.import]
*/
abstract class SirImport : SirElementBase(), SirDeclaration {
abstract override val origin: SirOrigin
abstract override val visibility: SirVisibility
abstract override var parent: SirDeclarationParent
abstract val moduleName: String
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
visitor.visitImport(this, data)
@Suppress("UNCHECKED_CAST")
override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
transformer.transformImport(this, data) as E
}
@@ -0,0 +1,53 @@
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
// 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.SirImport
import org.jetbrains.kotlin.sir.SirOrigin
import org.jetbrains.kotlin.sir.SirVisibility
import org.jetbrains.kotlin.sir.impl.SirImportImpl
@SirBuilderDsl
class SirImportBuilder {
var origin: SirOrigin = SirOrigin.Unknown
var visibility: SirVisibility = SirVisibility.PUBLIC
lateinit var moduleName: String
fun build(): SirImport {
return SirImportImpl(
origin,
visibility,
moduleName,
)
}
}
@OptIn(ExperimentalContracts::class)
inline fun buildImport(init: SirImportBuilder.() -> Unit): SirImport {
contract {
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
}
return SirImportBuilder().apply(init).build()
}
@OptIn(ExperimentalContracts::class)
inline fun buildImportCopy(original: SirImport, init: SirImportBuilder.() -> Unit): SirImport {
contract {
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
}
val copyBuilder = SirImportBuilder()
copyBuilder.origin = original.origin
copyBuilder.visibility = original.visibility
copyBuilder.moduleName = original.moduleName
return copyBuilder.apply(init).build()
}
@@ -0,0 +1,32 @@
/*
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
// 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.impl
import org.jetbrains.kotlin.sir.SirDeclarationParent
import org.jetbrains.kotlin.sir.SirImport
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 SirImportImpl(
override val origin: SirOrigin,
override val visibility: SirVisibility,
override val moduleName: String,
) : SirImport() {
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) {
}
}
@@ -150,4 +150,12 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
final override fun visitForeignVariable(variable: SirForeignVariable, data: D): SirDeclaration {
return transformForeignVariable(variable, data)
}
open fun transformImport(import: SirImport, data: D): SirDeclaration {
return transformDeclaration(import, data)
}
final override fun visitImport(import: SirImport, data: D): SirDeclaration {
return transformImport(import, data)
}
}
@@ -115,4 +115,10 @@ abstract class SirTransformerVoid : SirTransformer<Nothing?>() {
final override fun transformForeignVariable(variable: SirForeignVariable, data: Nothing?): SirDeclaration =
transformForeignVariable(variable)
open fun transformImport(import: SirImport): SirDeclaration =
transformDeclaration(import)
final override fun transformImport(import: SirImport, data: Nothing?): SirDeclaration =
transformImport(import)
}
@@ -64,4 +64,7 @@ abstract class SirVisitor<out R, in D> {
open fun visitForeignVariable(variable: SirForeignVariable, data: D): R =
visitDeclaration(variable, data)
open fun visitImport(import: SirImport, data: D): R =
visitDeclaration(import, data)
}
@@ -149,4 +149,12 @@ abstract class SirVisitorVoid : SirVisitor<Unit, Nothing?>() {
open fun visitForeignVariable(variable: SirForeignVariable) {
visitDeclaration(variable)
}
final override fun visitImport(import: SirImport, data: Nothing?) {
visitImport(import)
}
open fun visitImport(import: SirImport) {
visitDeclaration(import)
}
}
@@ -142,4 +142,11 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
visitorParameterName = "variable"
}
val import by element {
customParentInVisitor = declaration
parent(declaration)
+field("moduleName", string)
}
}