diff --git a/.idea/runConfigurations/Generate_IR_tree.xml b/.idea/runConfigurations/Generate_IR_tree.xml
new file mode 100644
index 0000000000000..f52e79fa434e1
--- /dev/null
+++ b/.idea/runConfigurations/Generate_IR_tree.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
\ No newline at end of file
diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt
index 861cbb08d1741..fda4a0dcd90a9 100644
--- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt
+++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ScriptGenerator.kt
@@ -110,33 +110,35 @@ class ScriptGenerator(declarationGenerator: DeclarationGenerator) : DeclarationG
makeParameter(it.thisAsReceiverParameter, IrDeclarationOrigin.SCRIPT_IMPLICIT_RECEIVER, parametersIndex++)
}
- irScript.providedProperties = descriptor.scriptProvidedProperties.zip(descriptor.scriptProvidedPropertiesParameters)
- .map { (providedProperty, parameter) ->
- // TODO: initializer
- // TODO: do not keep direct links
- val type = providedProperty.type.toIrType()
- val valueParameter = context.symbolTable.declareValueParameter(
+ descriptor.scriptProvidedProperties.zip(descriptor.scriptProvidedPropertiesParameters) { providedProperty, parameter ->
+ // TODO: initializer
+ // TODO: do not keep direct links
+ val type = providedProperty.type.toIrType()
+ val valueParameter = context.symbolTable.declareValueParameter(
+ UNDEFINED_OFFSET, UNDEFINED_OFFSET,
+ IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY, parameter, type
+ ) { symbol ->
+ context.irFactory.createValueParameter(
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
- IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY, parameter, type
- ) { symbol ->
- context.irFactory.createValueParameter(
- UNDEFINED_OFFSET, UNDEFINED_OFFSET,
- IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY, symbol, descriptor.name,
- parametersIndex, type, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
- ).also { it.parent = irScript }
- }
- parametersIndex++
- val irProperty =
- PropertyGenerator(declarationGenerator).generateSyntheticProperty(
- ktScript,
- providedProperty,
- valueParameter,
- generateSyntheticAccessors = true
- )
- irProperty.origin = IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY
- irScript.statements += irProperty
- valueParameter to irProperty.symbol
+ IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY, symbol, descriptor.name,
+ parametersIndex, type, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false
+ ).also { it.parent = irScript }
}
+ parametersIndex++
+ val irProperty =
+ PropertyGenerator(declarationGenerator).generateSyntheticProperty(
+ ktScript,
+ providedProperty,
+ valueParameter,
+ generateSyntheticAccessors = true
+ )
+ irProperty.origin = IrDeclarationOrigin.SCRIPT_PROVIDED_PROPERTY
+ irScript.statements += irProperty
+ valueParameter to irProperty.symbol
+ }.unzip().let { (params, props) ->
+ irScript.providedProperties = props
+ irScript.providedPropertiesParameters = params
+ }
irScript.constructor = with(IrFunctionBuilder().apply {
isPrimary = true
@@ -155,7 +157,7 @@ class ScriptGenerator(declarationGenerator: DeclarationGenerator) : DeclarationG
addIfNotNull(irScript.earlierScriptsParameter)
addAll(irScript.explicitCallParameters)
addAll(irScript.implicitReceiversParameters)
- irScript.providedProperties.forEach { add(it.first) }
+ addAll(irScript.providedPropertiesParameters)
}
irConstructor.parent = irScript
irConstructor.metadata = DescriptorMetadataSource.Function(descriptor.unsubstitutedPrimaryConstructor)
diff --git a/compiler/ir/ir.tree/build.gradle.kts b/compiler/ir/ir.tree/build.gradle.kts
index 92652a4dbd8ae..0b46c02918c3c 100644
--- a/compiler/ir/ir.tree/build.gradle.kts
+++ b/compiler/ir/ir.tree/build.gradle.kts
@@ -1,3 +1,5 @@
+import org.jetbrains.kotlin.ideaExt.idea
+
plugins {
kotlin("jvm")
id("jps-compatible")
@@ -10,10 +12,57 @@ dependencies {
implementation(project(":compiler:util"))
implementation(project(":compiler:config"))
+ compileOnly(project("tree-generator")) // Provided, so that IDEA can recognize references to this module in KDoc.
compileOnly(intellijCore())
}
sourceSets {
- "main" { projectDefault() }
+ "main" {
+ projectDefault()
+ this.java.srcDir("gen")
+ }
"test" {}
}
+
+val generatorClasspath by configurations.creating
+
+dependencies {
+ generatorClasspath(project("tree-generator"))
+}
+
+val generationRoot = projectDir.resolve("gen")
+
+val generateTree by tasks.registering(NoDebugJavaExec::class) {
+
+ val generatorRoot = "$projectDir/tree-generator/src/"
+
+ val generatorConfigurationFiles = fileTree(generatorRoot) {
+ include("**/*.kt")
+ }
+
+ inputs.files(generatorConfigurationFiles)
+ outputs.dirs(generationRoot)
+
+ args(generationRoot)
+ workingDir = rootDir
+ classpath = generatorClasspath
+ main = "org.jetbrains.kotlin.ir.generator.MainKt"
+ systemProperties["line.separator"] = "\n"
+}
+
+val compileKotlin by tasks
+
+compileKotlin.dependsOn(generateTree)
+
+tasks.withType> {
+ kotlinOptions {
+ freeCompilerArgs += "-Xinline-classes"
+ }
+}
+
+if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
+ apply(plugin = "idea")
+ idea {
+ this.module.generatedSourceDirs.add(generationRoot)
+ }
+}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/IrElement.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/IrElement.kt
index 8d7b87453a947..f8450ad8a709e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/IrElement.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.rootElement
+ */
interface IrElement {
val startOffset: Int
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrStatement.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/IrStatement.kt
similarity index 61%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrStatement.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/IrStatement.kt
index dfb83cf93ea9f..ef7c2236a22e5 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrStatement.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/IrStatement.kt
@@ -3,6 +3,13 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.statement
+ */
interface IrStatement : IrElement
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt
similarity index 84%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt
index 3cd66756626e8..3b756f5980e09 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.ClassDescriptor
@@ -12,9 +15,14 @@ import org.jetbrains.kotlin.ir.symbols.IrAnonymousInitializerSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.anonymousInitializer
+ */
abstract class IrAnonymousInitializer : IrDeclarationBase() {
@ObsoleteDescriptorBasedAPI
- abstract override val descriptor: ClassDescriptor // TODO special descriptor for anonymous initializer blocks
+ abstract override val descriptor: ClassDescriptor
+
abstract override val symbol: IrAnonymousInitializerSymbol
abstract val isStatic: Boolean
diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAttributeContainer.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAttributeContainer.kt
index 5fca48285858a..32f20c7f54cff 100644
--- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAttributeContainer.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrAttributeContainer.kt
@@ -3,17 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrElement
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.attributeContainer
+ */
interface IrAttributeContainer : IrElement {
- /**
- * An object which can be used as a key in the map in the backend-specific storage. If a brand new IR element is created, this property
- * should be equal to that element itself. If an element is copied from some other element, its id should be copied as well.
- *
- * Note that an [attributeOwnerId] of any element must be an element, whose [attributeOwnerId] is itself. In other words,
- * it shouldn't be needed to call this more than once to find the original attribute owner.
- */
var attributeOwnerId: IrAttributeContainer
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrClass.kt
similarity index 75%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrClass.kt
index 0198982dfeb8c..fecf630e44022 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrClass.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrClass.kt
@@ -3,9 +3,16 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
-import org.jetbrains.kotlin.descriptors.*
+import org.jetbrains.kotlin.descriptors.ClassDescriptor
+import org.jetbrains.kotlin.descriptors.ClassKind
+import org.jetbrains.kotlin.descriptors.Modality
+import org.jetbrains.kotlin.descriptors.SourceElement
+import org.jetbrains.kotlin.descriptors.ValueClassRepresentation
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.types.IrSimpleType
@@ -15,21 +22,32 @@ import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrClass :
- IrDeclarationBase(), IrPossiblyExternalDeclaration, IrDeclarationWithVisibility,
- IrDeclarationContainer, IrTypeParametersContainer, IrAttributeContainer, IrMetadataSourceOwner {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.class
+ */
+abstract class IrClass : IrDeclarationBase(), IrPossiblyExternalDeclaration,
+ IrDeclarationWithVisibility, IrTypeParametersContainer, IrDeclarationContainer,
+ IrAttributeContainer, IrMetadataSourceOwner {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: ClassDescriptor
+
abstract override val symbol: IrClassSymbol
abstract val kind: ClassKind
+
abstract var modality: Modality
+
abstract val isCompanion: Boolean
+
abstract val isInner: Boolean
+
abstract val isData: Boolean
+
abstract val isValue: Boolean
+
abstract val isExpect: Boolean
+
abstract val isFun: Boolean
abstract val source: SourceElement
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrConstructor.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrConstructor.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrConstructor.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrConstructor.kt
index ac878f7de280e..4b179fe03331c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrConstructor.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrConstructor.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
@@ -10,9 +13,14 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.constructor
+ */
abstract class IrConstructor : IrFunction() {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: ClassConstructorDescriptor
+
abstract override val symbol: IrConstructorSymbol
abstract val isPrimary: Boolean
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt
similarity index 79%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt
index d973d8430e9f6..73f35c38d35bf 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclaration.kt
@@ -3,12 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declaration
+ */
interface IrDeclaration : IrStatement, IrSymbolOwner, IrMutableAnnotationContainer {
@ObsoleteDescriptorBasedAPI
val descriptor: DeclarationDescriptor
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationBase.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationBase.kt
similarity index 55%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationBase.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationBase.kt
index 2a34018debc2a..dc0b3006dbeaf 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationBase.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationBase.kt
@@ -1,10 +1,17 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrElementBase
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declarationBase
+ */
abstract class IrDeclarationBase : IrElementBase(), IrDeclaration
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationContainer.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationContainer.kt
similarity index 66%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationContainer.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationContainer.kt
index 0c302a8f77af4..87a32526c673f 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationContainer.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationContainer.kt
@@ -3,8 +3,16 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
+
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declarationContainer
+ */
interface IrDeclarationContainer : IrDeclarationParent {
val declarations: MutableList
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationParent.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationParent.kt
similarity index 53%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationParent.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationParent.kt
index 8969cb0a9154a..fd196f479e648 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationParent.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationParent.kt
@@ -1,10 +1,17 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrElement
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declarationParent
+ */
interface IrDeclarationParent : IrElement
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithName.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithName.kt
similarity index 55%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithName.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithName.kt
index 0f24f150938fc..cb0359db7ecd8 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithName.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithName.kt
@@ -1,12 +1,19 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.name.Name
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declarationWithName
+ */
interface IrDeclarationWithName : IrDeclaration {
var name: Name
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithVisibility.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithVisibility.kt
similarity index 58%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithVisibility.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithVisibility.kt
index af8be92dfec04..cc7f430a772c7 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithVisibility.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrDeclarationWithVisibility.kt
@@ -1,12 +1,19 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declarationWithVisibility
+ */
interface IrDeclarationWithVisibility : IrDeclaration {
var visibility: DescriptorVisibility
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt
similarity index 89%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt
index f06aae383bef6..e654781566bc5 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrEnumEntry.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.ClassDescriptor
@@ -12,14 +15,20 @@ import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.enumEntry
+ */
abstract class IrEnumEntry : IrDeclarationBase(), IrDeclarationWithName {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: ClassDescriptor
+
abstract override val symbol: IrEnumEntrySymbol
- abstract var correspondingClass: IrClass?
abstract var initializerExpression: IrExpressionBody?
+ abstract var correspondingClass: IrClass?
+
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitEnumEntry(this, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt
index c70978557dacb..027da57a75e6e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrErrorDeclaration.kt
@@ -3,15 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.errorDeclaration
+ */
abstract class IrErrorDeclaration : IrDeclarationBase() {
- override fun accept(visitor: IrElementVisitor, data: D): R =
- visitor.visitErrorDeclaration(this, data)
-
override val symbol: IrSymbol
get() = error("Should never be called")
+
+ override fun accept(visitor: IrElementVisitor, data: D): R =
+ visitor.visitErrorDeclaration(this, data)
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrExternalPackageFragment.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrExternalPackageFragment.kt
similarity index 87%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrExternalPackageFragment.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrExternalPackageFragment.kt
index 13ddedd26e298..0c777cacfe58f 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrExternalPackageFragment.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrExternalPackageFragment.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
@@ -11,8 +14,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.externalPackageFragment
+ */
abstract class IrExternalPackageFragment : IrPackageFragment() {
abstract override val symbol: IrExternalPackageFragmentSymbol
+
abstract val containerSource: DeserializedContainerSource?
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideFunction.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideFunction.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideFunction.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideFunction.kt
index 189447807734d..3b3538239ee57 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideFunction.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideFunction.kt
@@ -3,17 +3,24 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.fakeOverrideFunction
+ */
interface IrFakeOverrideFunction : IrDeclaration {
override val symbol: IrSimpleFunctionSymbol
var modality: Modality
- fun acquireSymbol(symbol: IrSimpleFunctionSymbol): IrSimpleFunction
-
val isBound: Boolean
+
+ fun acquireSymbol(symbol: IrSimpleFunctionSymbol): IrSimpleFunction
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideProperty.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideProperty.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideProperty.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideProperty.kt
index e6f5b28c89b91..23691d97fa9b8 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideProperty.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFakeOverrideProperty.kt
@@ -3,19 +3,28 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.fakeOverrideProperty
+ */
interface IrFakeOverrideProperty : IrDeclaration {
override val symbol: IrPropertySymbol
var modality: Modality
+
var getter: IrSimpleFunction?
- var setter: IrSimpleFunction?
- fun acquireSymbol(symbol: IrPropertySymbol): IrProperty
+ var setter: IrSimpleFunction?
val isBound: Boolean
+
+ fun acquireSymbol(symbol: IrPropertySymbol): IrProperty
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrField.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrField.kt
index 43e9c611cd330..b9d4bd5a3b84c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrField.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
@@ -14,16 +17,21 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrField :
- IrDeclarationBase(),
- IrPossiblyExternalDeclaration, IrDeclarationWithVisibility, IrDeclarationParent, IrMetadataSourceOwner {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.field
+ */
+abstract class IrField : IrDeclarationBase(), IrPossiblyExternalDeclaration,
+ IrDeclarationWithVisibility, IrDeclarationParent, IrMetadataSourceOwner {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: PropertyDescriptor
+
abstract override val symbol: IrFieldSymbol
abstract var type: IrType
+
abstract val isFinal: Boolean
+
abstract val isStatic: Boolean
abstract var initializer: IrExpressionBody?
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFile.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFile.kt
index febba2518aa02..2a6ce87c0ae81 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFile.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFile.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrFileEntry
@@ -11,7 +14,12 @@ import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrFile : IrPackageFragment(), IrMutableAnnotationContainer, IrMetadataSourceOwner {
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.file
+ */
+abstract class IrFile : IrPackageFragment(), IrMetadataSourceOwner,
+ IrMutableAnnotationContainer {
abstract override val symbol: IrFileSymbol
abstract val module: IrModuleFragment
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFunction.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFunction.kt
index 720e854c9736b..8b286c5168c19 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrFunction.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
@@ -14,49 +17,47 @@ import org.jetbrains.kotlin.ir.util.transformIfNeeded
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrFunction :
- IrDeclarationBase(),
- IrPossiblyExternalDeclaration, IrDeclarationWithVisibility, IrTypeParametersContainer, IrSymbolOwner, IrDeclarationParent, IrReturnTarget,
- IrMemberWithContainerSource,
- IrMetadataSourceOwner {
-
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.function
+ */
+abstract class IrFunction : IrDeclarationBase(), IrPossiblyExternalDeclaration,
+ IrDeclarationWithVisibility, IrTypeParametersContainer, IrSymbolOwner, IrDeclarationParent,
+ IrReturnTarget, IrMemberWithContainerSource, IrMetadataSourceOwner {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: FunctionDescriptor
+
abstract override val symbol: IrFunctionSymbol
- abstract val isInline: Boolean // NB: there's an inline constructor for Array and each primitive array class
+ abstract val isInline: Boolean
+
abstract val isExpect: Boolean
abstract var returnType: IrType
abstract var dispatchReceiverParameter: IrValueParameter?
+
abstract var extensionReceiverParameter: IrValueParameter?
+
abstract var valueParameters: List
- /**
- * The first `contextReceiverParametersCount` value parameters are context receivers
- */
abstract var contextReceiverParametersCount: Int
abstract var body: IrBody?
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
typeParameters.forEach { it.accept(visitor, data) }
-
dispatchReceiverParameter?.accept(visitor, data)
extensionReceiverParameter?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) }
-
body?.accept(visitor, data)
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
typeParameters = typeParameters.transformIfNeeded(transformer, data)
-
dispatchReceiverParameter = dispatchReceiverParameter?.transform(transformer, data)
extensionReceiverParameter = extensionReceiverParameter?.transform(transformer, data)
valueParameters = valueParameters.transformIfNeeded(transformer, data)
-
body = body?.transform(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt
index 9d5d0edc19841..9ee126f0ef2b8 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
@@ -12,21 +15,25 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrLocalDelegatedProperty :
- IrDeclarationBase(),
- IrDeclarationWithName,
- IrSymbolOwner,
- IrMetadataSourceOwner {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.localDelegatedProperty
+ */
+abstract class IrLocalDelegatedProperty : IrDeclarationBase(), IrDeclarationWithName,
+ IrSymbolOwner, IrMetadataSourceOwner {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: VariableDescriptorWithAccessors
+
abstract override val symbol: IrLocalDelegatedPropertySymbol
abstract var type: IrType
+
abstract val isVar: Boolean
abstract var delegate: IrVariable
+
abstract var getter: IrSimpleFunction
+
abstract var setter: IrSimpleFunction?
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrMemberWithContainerSource.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrMemberWithContainerSource.kt
similarity index 62%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrMemberWithContainerSource.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrMemberWithContainerSource.kt
index d40849d0a87dc..2e89be1273f6a 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrMemberWithContainerSource.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrMemberWithContainerSource.kt
@@ -1,12 +1,19 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.memberWithContainerSource
+ */
interface IrMemberWithContainerSource : IrDeclarationWithName {
val containerSource: DeserializedContainerSource?
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrMetadataSourceOwner.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrMetadataSourceOwner.kt
similarity index 56%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrMetadataSourceOwner.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrMetadataSourceOwner.kt
index b6d122bb1d662..13eb684526aec 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrMetadataSourceOwner.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrMetadataSourceOwner.kt
@@ -1,12 +1,19 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrElement
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.metadataSourceOwner
+ */
interface IrMetadataSourceOwner : IrElement {
var metadata: MetadataSource?
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrModuleFragment.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrModuleFragment.kt
similarity index 79%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrModuleFragment.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrModuleFragment.kt
index 0c7118b22b86b..51dcc52c815e4 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrModuleFragment.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrModuleFragment.kt
@@ -3,10 +3,14 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.ir.IrBuiltIns
+import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.util.transformInPlace
@@ -14,10 +18,17 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.name.Name
-abstract class IrModuleFragment : IrElementBase() {
- abstract val name: Name
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.moduleFragment
+ */
+abstract class IrModuleFragment : IrElementBase(), IrElement {
abstract val descriptor: ModuleDescriptor
+
+ abstract val name: Name
+
abstract val irBuiltins: IrBuiltIns
+
abstract val files: MutableList
override val startOffset: Int
@@ -29,8 +40,8 @@ abstract class IrModuleFragment : IrElementBase() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitModuleFragment(this, data)
- override fun transform(transformer: IrElementTransformer, data: D): IrModuleFragment =
- accept(transformer, data) as IrModuleFragment
+ override fun transform(transformer: IrElementTransformer, data: D):
+ IrModuleFragment = accept(transformer, data) as IrModuleFragment
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
files.forEach { it.accept(visitor, data) }
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrOverridableDeclaration.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableDeclaration.kt
similarity index 62%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrOverridableDeclaration.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableDeclaration.kt
index 937cda58b0378..5f39c783792dd 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrOverridableDeclaration.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableDeclaration.kt
@@ -1,14 +1,23 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.symbols.IrSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.overridableDeclaration
+ */
interface IrOverridableDeclaration : IrOverridableMember {
override val symbol: S
+
val isFakeOverride: Boolean
+
var overriddenSymbols: List
}
diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableMember.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableMember.kt
index a3cea11fd6ffc..1408948ce062c 100644
--- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableMember.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrOverridableMember.kt
@@ -1,12 +1,20 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.Modality
-interface IrOverridableMember : IrDeclarationWithVisibility, IrDeclarationWithName, IrSymbolOwner {
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.overridableMember
+ */
+interface IrOverridableMember : IrDeclaration, IrDeclarationWithVisibility,
+ IrDeclarationWithName, IrSymbolOwner {
val modality: Modality
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrPackageFragment.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrPackageFragment.kt
similarity index 82%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrPackageFragment.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrPackageFragment.kt
index d0ddc35caf4e1..612563f40e65b 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrPackageFragment.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrPackageFragment.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
@@ -11,10 +14,15 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.IrPackageFragmentSymbol
import org.jetbrains.kotlin.name.FqName
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.packageFragment
+ */
abstract class IrPackageFragment : IrElementBase(), IrDeclarationContainer, IrSymbolOwner {
+ abstract override val symbol: IrPackageFragmentSymbol
+
@ObsoleteDescriptorBasedAPI
abstract val packageFragmentDescriptor: PackageFragmentDescriptor
- abstract override val symbol: IrPackageFragmentSymbol
abstract val fqName: FqName
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrPossiblyExternalDeclaration.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrPossiblyExternalDeclaration.kt
similarity index 53%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrPossiblyExternalDeclaration.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrPossiblyExternalDeclaration.kt
index 996d12d0e17cb..7a00179c33a63 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrPossiblyExternalDeclaration.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrPossiblyExternalDeclaration.kt
@@ -1,10 +1,18 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
+
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.possiblyExternalDeclaration
+ */
interface IrPossiblyExternalDeclaration : IrDeclarationWithName {
val isExternal: Boolean
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrProperty.kt
similarity index 74%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrProperty.kt
index 0621e8b10b9bf..3d9735de48ace 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrProperty.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrProperty.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
@@ -11,27 +14,34 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrProperty :
- IrDeclarationBase(),
- IrPossiblyExternalDeclaration,
- IrOverridableDeclaration,
- IrMetadataSourceOwner,
- IrAttributeContainer,
- IrMemberWithContainerSource {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.property
+ */
+abstract class IrProperty : IrDeclarationBase(), IrPossiblyExternalDeclaration,
+ IrOverridableDeclaration, IrMetadataSourceOwner, IrAttributeContainer,
+ IrMemberWithContainerSource {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: PropertyDescriptor
+
abstract override val symbol: IrPropertySymbol
abstract val isVar: Boolean
+
abstract val isConst: Boolean
+
abstract val isLateinit: Boolean
+
abstract val isDelegated: Boolean
+
abstract val isExpect: Boolean
+
abstract override val isFakeOverride: Boolean
abstract var backingField: IrField?
+
abstract var getter: IrSimpleFunction?
+
abstract var setter: IrSimpleFunction?
override fun accept(visitor: IrElementVisitor, data: D): R =
@@ -45,7 +55,7 @@ abstract class IrProperty :
override fun transformChildren(transformer: IrElementTransformer, data: D) {
backingField = backingField?.transform(transformer, data) as? IrField
- getter = getter?.run { transform(transformer, data) as IrSimpleFunction }
- setter = setter?.run { transform(transformer, data) as IrSimpleFunction }
+ getter = getter?.transform(transformer, data) as? IrSimpleFunction
+ setter = setter?.transform(transformer, data) as? IrSimpleFunction
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrReturnTarget.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrReturnTarget.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrReturnTarget.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrReturnTarget.kt
index 773f93f412578..5cab2c94becf9 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrReturnTarget.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrReturnTarget.kt
@@ -3,15 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.IrReturnTargetSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.returnTarget
+ */
interface IrReturnTarget : IrSymbolOwner {
@ObsoleteDescriptorBasedAPI
val descriptor: FunctionDescriptor
override val symbol: IrReturnTargetSymbol
-}
\ No newline at end of file
+}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrScript.kt
similarity index 70%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrScript.kt
index 08d7bf2722338..41f8d48ee4958 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrScript.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrScript.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.expressions.IrStatementContainer
@@ -10,20 +13,19 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol
import org.jetbrains.kotlin.ir.types.IrType
+import org.jetbrains.kotlin.ir.util.transformIfNeeded
import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-//TODO: make IrScript as IrPackageFragment, because script is used as a file, not as a class
-//NOTE: declarations and statements stored separately
-abstract class IrScript :
- IrDeclarationBase(), IrDeclarationWithName,
- IrDeclarationParent, IrStatementContainer, IrMetadataSourceOwner {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.script
+ */
+abstract class IrScript : IrDeclarationBase(), IrDeclarationWithName, IrDeclarationParent,
+ IrStatementContainer, IrMetadataSourceOwner {
abstract override val symbol: IrScriptSymbol
- // NOTE: is the result of the FE conversion, because there script interpreted as a class and has receiver
- // TODO: consider removing from here and handle appropriately in the lowering
abstract var thisReceiver: IrValueParameter
abstract var baseClass: IrType
@@ -32,7 +34,9 @@ abstract class IrScript :
abstract var implicitReceiversParameters: List
- abstract var providedProperties: List>
+ abstract var providedProperties: List
+
+ abstract var providedPropertiesParameters: List
abstract var resultProperty: IrPropertySymbol?
@@ -52,16 +56,18 @@ abstract class IrScript :
thisReceiver.accept(visitor, data)
explicitCallParameters.forEach { it.accept(visitor, data) }
implicitReceiversParameters.forEach { it.accept(visitor, data) }
- providedProperties.forEach { it.first.accept(visitor, data) }
+ providedPropertiesParameters.forEach { it.accept(visitor, data) }
earlierScriptsParameter?.accept(visitor, data)
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
statements.transformInPlace(transformer, data)
thisReceiver = thisReceiver.transform(transformer, data)
- explicitCallParameters = explicitCallParameters.map { it.transform(transformer, data) }
- implicitReceiversParameters = implicitReceiversParameters.map { it.transform(transformer, data) }
- providedProperties = providedProperties.map { it.first.transform(transformer, data) to it.second }
+ explicitCallParameters = explicitCallParameters.transformIfNeeded(transformer, data)
+ implicitReceiversParameters = implicitReceiversParameters.transformIfNeeded(transformer,
+ data)
+ providedPropertiesParameters = providedPropertiesParameters.transformIfNeeded(transformer,
+ data)
earlierScriptsParameter = earlierScriptsParameter?.transform(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt
similarity index 74%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt
index 3b4af5f698f5f..d97691784f22b 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSimpleFunction.kt
@@ -3,23 +3,31 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrSimpleFunction :
- IrFunction(),
- IrOverridableDeclaration,
- IrAttributeContainer {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.simpleFunction
+ */
+abstract class IrSimpleFunction : IrFunction(),
+ IrOverridableDeclaration, IrAttributeContainer {
abstract override val symbol: IrSimpleFunctionSymbol
abstract val isTailrec: Boolean
+
abstract val isSuspend: Boolean
+
abstract override val isFakeOverride: Boolean
+
abstract val isOperator: Boolean
+
abstract val isInfix: Boolean
abstract var correspondingPropertySymbol: IrPropertySymbol?
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSymbolOwner.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSymbolOwner.kt
similarity index 59%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSymbolOwner.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSymbolOwner.kt
index 68afee9b97ddf..1d8222597b464 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrSymbolOwner.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrSymbolOwner.kt
@@ -1,13 +1,20 @@
/*
- * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.symbols.IrSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.symbolOwner
+ */
interface IrSymbolOwner : IrElement {
val symbol: IrSymbol
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt
index 46ed4d8bf73c5..1ffedcaef5c91 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeAlias.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
@@ -13,17 +16,19 @@ import org.jetbrains.kotlin.ir.util.transformIfNeeded
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrTypeAlias :
- IrDeclarationBase(),
- IrDeclarationWithName,
- IrDeclarationWithVisibility,
- IrTypeParametersContainer {
-
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.typeAlias
+ */
+abstract class IrTypeAlias : IrDeclarationBase(), IrDeclarationWithName,
+ IrDeclarationWithVisibility, IrTypeParametersContainer {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: TypeAliasDescriptor
+
abstract override val symbol: IrTypeAliasSymbol
abstract val isActual: Boolean
+
abstract var expandedType: IrType
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt
similarity index 82%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt
index ea152e644c766..215df855c1f35 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeParameter.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
@@ -13,19 +16,27 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.types.Variance
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.typeParameter
+ */
abstract class IrTypeParameter : IrDeclarationBase(), IrDeclarationWithName {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: TypeParameterDescriptor
+
abstract override val symbol: IrTypeParameterSymbol
abstract val variance: Variance
+
abstract val index: Int
+
abstract val isReified: Boolean
+
abstract var superTypes: List
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitTypeParameter(this, data)
- override fun transform(transformer: IrElementTransformer, data: D): IrTypeParameter =
- transformer.visitTypeParameter(this, data) as IrTypeParameter
+ override fun transform(transformer: IrElementTransformer, data: D):
+ IrTypeParameter = accept(transformer, data) as IrTypeParameter
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParametersContainer.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeParametersContainer.kt
similarity index 67%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParametersContainer.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeParametersContainer.kt
index 8bbaa8de87b7b..d9f8dfe9244c7 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrTypeParametersContainer.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrTypeParametersContainer.kt
@@ -3,8 +3,16 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
+
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.typeParametersContainer
+ */
interface IrTypeParametersContainer : IrDeclaration, IrDeclarationParent {
var typeParameters: List
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt
similarity index 56%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt
index 8338558677e56..82879de187d1f 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrValueDeclaration.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.ValueDescriptor
@@ -10,12 +13,17 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
import org.jetbrains.kotlin.ir.types.IrType
-abstract class IrValueDeclaration : IrDeclarationBase(), IrDeclarationWithName, IrSymbolOwner {
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.valueDeclaration
+ */
+interface IrValueDeclaration : IrDeclarationWithName, IrSymbolOwner {
@ObsoleteDescriptorBasedAPI
- abstract override val descriptor: ValueDescriptor
+ override val descriptor: ValueDescriptor
+
+ override val symbol: IrValueSymbol
- abstract override val symbol: IrValueSymbol
- abstract var type: IrType
+ var type: IrType
- abstract val isAssignable: Boolean
+ val isAssignable: Boolean
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt
similarity index 75%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt
index dd6e0e4757f93..f0352cbe79030 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrValueParameter.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
@@ -13,20 +16,24 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrValueParameter : IrValueDeclaration() {
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.valueParameter
+ */
+abstract class IrValueParameter : IrDeclarationBase(), IrValueDeclaration {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: ParameterDescriptor
+
abstract override val symbol: IrValueParameterSymbol
abstract val index: Int
+
abstract var varargElementType: IrType?
+
abstract val isCrossinline: Boolean
+
abstract val isNoinline: Boolean
- // if true parameter is not included into IdSignature.
- // Skipping hidden params makes IrFunction be look similar to FE.
- // NOTE: it is introduced to fix KT-40980 because more clear solution was not possible to implement.
- // Once we are able to load any top-level declaration from klib this hack should be deprecated and removed.
abstract val isHidden: Boolean
abstract var defaultValue: IrExpressionBody?
@@ -34,8 +41,8 @@ abstract class IrValueParameter : IrValueDeclaration() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitValueParameter(this, data)
- override fun transform(transformer: IrElementTransformer, data: D): IrValueParameter =
- transformer.visitValueParameter(this, data) as IrValueParameter
+ override fun transform(transformer: IrElementTransformer, data: D):
+ IrValueParameter = accept(transformer, data) as IrValueParameter
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
defaultValue?.accept(visitor, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrVariable.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrVariable.kt
similarity index 84%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrVariable.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrVariable.kt
index 70f9d0c6cdbec..8c29bc79c6e7d 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrVariable.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/declarations/IrVariable.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.descriptors.VariableDescriptor
@@ -12,13 +15,20 @@ import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrVariable : IrValueDeclaration() {
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.variable
+ */
+abstract class IrVariable : IrDeclarationBase(), IrValueDeclaration {
@ObsoleteDescriptorBasedAPI
abstract override val descriptor: VariableDescriptor
+
abstract override val symbol: IrVariableSymbol
abstract val isVar: Boolean
+
abstract val isConst: Boolean
+
abstract val isLateinit: Boolean
abstract var initializer: IrExpression?
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBlock.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBlock.kt
similarity index 76%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBlock.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBlock.kt
index d938a63c40150..7ce84da48cad0 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBlock.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBlock.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.block
+ */
abstract class IrBlock : IrContainerExpression() {
override val isTransparentScope: Boolean
get() = false
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBlockBody.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBlockBody.kt
similarity index 85%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBlockBody.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBlockBody.kt
index 5cef586005163..4fb5b7bd7a93c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBlockBody.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBlockBody.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrFactory
@@ -10,6 +13,10 @@ import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.blockBody
+ */
abstract class IrBlockBody : IrBody(), IrStatementContainer {
abstract val factory: IrFactory
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBody.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBody.kt
similarity index 65%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBody.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBody.kt
index 734ca28907c8e..b6e1c54a462d9 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBody.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBody.kt
@@ -3,12 +3,20 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
-abstract class IrBody : IrElementBase() {
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.body
+ */
+abstract class IrBody : IrElementBase(), IrElement {
override fun transform(transformer: IrElementTransformer, data: D): IrBody =
accept(transformer, data) as IrBody
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBranch.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBranch.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBranch.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBranch.kt
index 6f42b0b8e6bc7..f427e76d3a51e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBranch.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBranch.kt
@@ -3,27 +3,36 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrBranch : IrElementBase() {
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.branch
+ */
+abstract class IrBranch : IrElementBase(), IrElement {
abstract var condition: IrExpression
+
abstract var result: IrExpression
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitBranch(this, data)
+ override fun transform(transformer: IrElementTransformer, data: D): IrBranch =
+ accept(transformer, data) as IrBranch
+
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
condition.accept(visitor, data)
result.accept(visitor, data)
}
- override fun transform(transformer: IrElementTransformer, data: D): IrBranch =
- transformer.visitBranch(this, data)
-
override fun transformChildren(transformer: IrElementTransformer, data: D) {
condition = condition.transform(transformer, data)
result = result.transform(transformer, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBreak.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBreak.kt
similarity index 74%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBreak.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBreak.kt
index 7f9873856dc04..5ad7b5f3e8704 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBreak.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBreak.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.break
+ */
abstract class IrBreak : IrBreakContinue() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitBreak(this, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBreakContinue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBreakContinue.kt
similarity index 67%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBreakContinue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBreakContinue.kt
index 6266de0fe6c8c..e48a717908df2 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrBreakContinue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrBreakContinue.kt
@@ -3,8 +3,16 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.breakContinue
+ */
abstract class IrBreakContinue : IrExpression() {
abstract var loop: IrLoop
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCall.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCall.kt
index dac334ecdef67..b62efc57a0509 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCall.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCall.kt
@@ -3,14 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.call
+ */
abstract class IrCall : IrFunctionAccessExpression() {
abstract override val symbol: IrSimpleFunctionSymbol
+
abstract val superQualifierSymbol: IrClassSymbol?
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt
similarity index 72%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt
index 65cb993e120e0..aaff578fb8f1f 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.name.Name
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.callableReference
+ */
abstract class IrCallableReference : IrMemberAccessExpression() {
abstract val referencedName: Name
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCatch.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCatch.kt
similarity index 79%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCatch.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCatch.kt
index 5c88e38d09117..92f4bfcf067b9 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCatch.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrCatch.kt
@@ -3,28 +3,37 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.declarations.IrVariable
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrCatch : IrElementBase() {
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.catch
+ */
+abstract class IrCatch : IrElementBase(), IrElement {
abstract var catchParameter: IrVariable
+
abstract var result: IrExpression
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitCatch(this, data)
+ override fun transform(transformer: IrElementTransformer, data: D): IrCatch =
+ accept(transformer, data) as IrCatch
+
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
catchParameter.accept(visitor, data)
result.accept(visitor, data)
}
- override fun transform(transformer: IrElementTransformer, data: D): IrCatch =
- super.transform(transformer, data) as IrCatch
-
override fun transformChildren(transformer: IrElementTransformer, data: D) {
catchParameter = catchParameter.transform(transformer, data) as IrVariable
result = result.transform(transformer, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt
similarity index 80%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt
index 69c020ec43a1f..2ff7ab3e5bb8b 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrClassReference.kt
@@ -3,14 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.classReference
+ */
abstract class IrClassReference : IrDeclarationReference() {
abstract override val symbol: IrClassifierSymbol
+
abstract var classType: IrType
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrComposite.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrComposite.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrComposite.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrComposite.kt
index 8239312b55a85..d8803d7986ac6 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrComposite.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrComposite.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.composite
+ */
abstract class IrComposite : IrContainerExpression() {
override val isTransparentScope: Boolean
get() = true
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConst.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConst.kt
similarity index 76%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConst.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConst.kt
index f51e28d3b7f74..d8c48e1a75296 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConst.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConst.kt
@@ -3,12 +3,20 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.const
+ */
abstract class IrConst : IrExpression() {
abstract val kind: IrConstKind
+
abstract val value: T
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantArray.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantArray.kt
similarity index 75%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantArray.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantArray.kt
index adb8a53c07625..d6bcee957733c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantArray.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantArray.kt
@@ -3,12 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.constantArray
+ */
abstract class IrConstantArray : IrConstantValue() {
abstract val elements: MutableList
@@ -16,10 +23,10 @@ abstract class IrConstantArray : IrConstantValue() {
visitor.visitConstantArray(this, data)
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
- elements.forEach { value -> value.accept(visitor, data) }
+ elements.forEach { it.accept(visitor, data) }
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- elements.transformInPlace { value -> value.transform(transformer, data) }
+ elements.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantObject.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantObject.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantObject.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantObject.kt
index ff5a60ef429f6..aceb4874d5647 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantObject.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantObject.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
@@ -11,19 +14,25 @@ import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.constantObject
+ */
abstract class IrConstantObject : IrConstantValue() {
abstract val constructor: IrConstructorSymbol
+
abstract val valueArguments: MutableList
+
abstract val typeArguments: List
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitConstantObject(this, data)
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
- valueArguments.forEach { value -> value.accept(visitor, data) }
+ valueArguments.forEach { it.accept(visitor, data) }
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- valueArguments.transformInPlace { it.transform(transformer, data) }
+ valueArguments.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantPrimitive.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantPrimitive.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantPrimitive.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantPrimitive.kt
index c5af488bf4c24..890271e7cc5d2 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantPrimitive.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantPrimitive.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.constantPrimitive
+ */
abstract class IrConstantPrimitive : IrConstantValue() {
abstract var value: IrConst<*>
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantValue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantValue.kt
similarity index 70%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantValue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantValue.kt
index 632cf1930b3f6..455961dd43a9c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstantValue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstantValue.kt
@@ -3,9 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.constantValue
+ */
abstract class IrConstantValue : IrExpression() {
abstract fun contentEquals(other: IrConstantValue): Boolean
+
abstract fun contentHashCode(): Int
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstructorCall.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstructorCall.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstructorCall.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstructorCall.kt
index 9437d58e9d5d4..6747a8272e081 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrConstructorCall.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrConstructorCall.kt
@@ -3,12 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.constructorCall
+ */
abstract class IrConstructorCall : IrFunctionAccessExpression() {
abstract override val symbol: IrConstructorSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrContainerExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrContainerExpression.kt
similarity index 84%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrContainerExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrContainerExpression.kt
index f982c9ddbc050..e8f36f178124c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrContainerExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrContainerExpression.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.IrStatement
@@ -10,8 +13,13 @@ import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.containerExpression
+ */
abstract class IrContainerExpression : IrExpression(), IrStatementContainer {
abstract val origin: IrStatementOrigin?
+
abstract val isTransparentScope: Boolean
override val statements: MutableList = ArrayList(2)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrContinue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrContinue.kt
similarity index 74%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrContinue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrContinue.kt
index 3e624917131cc..b20024e5d1c72 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrContinue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrContinue.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.continue
+ */
abstract class IrContinue : IrBreakContinue() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitContinue(this, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt
similarity index 68%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt
index 62298e747504e..9f2a322668c7d 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDeclarationReference.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.declarationReference
+ */
abstract class IrDeclarationReference : IrExpression() {
abstract val symbol: IrSymbol
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt
index a856067e01656..23f68d85ca10e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDelegatingConstructorCall.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.delegatingConstructorCall
+ */
abstract class IrDelegatingConstructorCall : IrFunctionAccessExpression() {
abstract override val symbol: IrConstructorSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDoWhileLoop.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDoWhileLoop.kt
similarity index 84%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDoWhileLoop.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDoWhileLoop.kt
index 2255c9e66f4f2..1db13beea3f81 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDoWhileLoop.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDoWhileLoop.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.doWhileLoop
+ */
abstract class IrDoWhileLoop : IrLoop() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitDoWhileLoop(this, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicExpression.kt
similarity index 63%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicExpression.kt
index 9979eaa27aace..8b0f64962d5f3 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicExpression.kt
@@ -3,6 +3,13 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.dynamicExpression
+ */
abstract class IrDynamicExpression : IrExpression()
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicMemberExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicMemberExpression.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicMemberExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicMemberExpression.kt
index 90f9a872f45b5..8ffab1698f759 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicMemberExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicMemberExpression.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.dynamicMemberExpression
+ */
abstract class IrDynamicMemberExpression : IrDynamicExpression() {
abstract val memberName: String
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicOperatorExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicOperatorExpression.kt
similarity index 74%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicOperatorExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicOperatorExpression.kt
index 53030fd9a4c3c..837fcde4f517e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrDynamicOperatorExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrDynamicOperatorExpression.kt
@@ -3,11 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.dynamicOperatorExpression
+ */
abstract class IrDynamicOperatorExpression : IrDynamicExpression() {
abstract val operator: IrDynamicOperator
@@ -20,15 +28,11 @@ abstract class IrDynamicOperatorExpression : IrDynamicExpression() {
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
receiver.accept(visitor, data)
- for (valueArgument in arguments) {
- valueArgument.accept(visitor, data)
- }
+ arguments.forEach { it.accept(visitor, data) }
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
receiver = receiver.transform(transformer, data)
- for (i in arguments.indices) {
- arguments[i] = arguments[i].transform(transformer, data)
- }
+ arguments.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrElseBranch.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrElseBranch.kt
similarity index 70%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrElseBranch.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrElseBranch.kt
index c34c3abba7d26..d2042932affd0 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrElseBranch.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrElseBranch.kt
@@ -3,15 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.elseBranch
+ */
abstract class IrElseBranch : IrBranch() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitElseBranch(this, data)
- override fun transform(transformer: IrElementTransformer, data: D): IrElseBranch =
- transformer.visitElseBranch(this, data)
+ override fun transform(transformer: IrElementTransformer, data: D): IrElseBranch
+ = accept(transformer, data) as IrElseBranch
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt
index ae61bf4de3ae8..2ed2cb6f16db3 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrEnumConstructorCall.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.enumConstructorCall
+ */
abstract class IrEnumConstructorCall : IrFunctionAccessExpression() {
abstract override val symbol: IrConstructorSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrErrorCallExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrErrorCallExpression.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrErrorCallExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrErrorCallExpression.kt
index adab53085671b..fe5565ad17949 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrErrorCallExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrErrorCallExpression.kt
@@ -3,13 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.errorCallExpression
+ */
abstract class IrErrorCallExpression : IrErrorExpression() {
abstract var explicitReceiver: IrExpression?
+
abstract val arguments: MutableList
override fun accept(visitor: IrElementVisitor, data: D): R =
@@ -22,8 +31,6 @@ abstract class IrErrorCallExpression : IrErrorExpression() {
override fun transformChildren(transformer: IrElementTransformer, data: D) {
explicitReceiver = explicitReceiver?.transform(transformer, data)
- arguments.forEachIndexed { i, irExpression ->
- arguments[i] = irExpression.transform(transformer, data)
- }
+ arguments.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrErrorExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrErrorExpression.kt
similarity index 75%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrErrorExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrErrorExpression.kt
index e01b69c3a77d3..3a1077a54a27b 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrErrorExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrErrorExpression.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.errorExpression
+ */
abstract class IrErrorExpression : IrExpression() {
abstract val description: String
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrExpression.kt
similarity index 71%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrExpression.kt
index 941a5351a6c09..86303163f9f1b 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrExpression.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.IrElementBase
@@ -11,12 +14,16 @@ import org.jetbrains.kotlin.ir.declarations.IrAttributeContainer
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
-abstract class IrExpression : IrElementBase(), IrStatement, IrVarargElement, IrAttributeContainer {
- @Suppress("LeakingThis")
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.expression
+ */
+abstract class IrExpression : IrElementBase(), IrStatement, IrVarargElement,
+ IrAttributeContainer {
override var attributeOwnerId: IrAttributeContainer = this
abstract var type: IrType
- override fun transform(transformer: IrElementTransformer, data: D): IrExpression =
- accept(transformer, data) as IrExpression
+ override fun transform(transformer: IrElementTransformer, data: D): IrExpression
+ = accept(transformer, data) as IrExpression
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrExpressionBody.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrExpressionBody.kt
similarity index 79%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrExpressionBody.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrExpressionBody.kt
index 11de31b03360a..b40d78f28b171 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrExpressionBody.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrExpressionBody.kt
@@ -3,12 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrFactory
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.expressionBody
+ */
abstract class IrExpressionBody : IrBody() {
abstract val factory: IrFactory
@@ -17,8 +24,8 @@ abstract class IrExpressionBody : IrBody() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitExpressionBody(this, data)
- override fun transform(transformer: IrElementTransformer, data: D): IrExpressionBody =
- accept(transformer, data) as IrExpressionBody
+ override fun transform(transformer: IrElementTransformer, data: D):
+ IrExpressionBody = accept(transformer, data) as IrExpressionBody
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
expression.accept(visitor, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt
index e19534d4747c3..f90aa05c48493 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFieldAccessExpression.kt
@@ -3,16 +3,24 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.fieldAccessExpression
+ */
abstract class IrFieldAccessExpression : IrDeclarationReference() {
abstract override val symbol: IrFieldSymbol
abstract val superQualifierSymbol: IrClassSymbol?
var receiver: IrExpression? = null
+
abstract val origin: IrStatementOrigin?
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression.kt
similarity index 70%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression.kt
index 5328c1d6524cf..ca6c1b6979988 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionAccessExpression.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.functionAccessExpression
+ */
abstract class IrFunctionAccessExpression : IrMemberAccessExpression() {
abstract var contextReceiversCount: Int
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionExpression.kt
similarity index 85%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionExpression.kt
index 53fd6735fb343..3c87e88cb5ff9 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionExpression.kt
@@ -3,12 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.functionExpression
+ */
abstract class IrFunctionExpression : IrExpression() {
abstract val origin: IrStatementOrigin
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionReference.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionReference.kt
index 5edca4cc503a5..4515cc27b37ad 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrFunctionReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrFunctionReference.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.functionReference
+ */
abstract class IrFunctionReference : IrCallableReference() {
abstract val reflectionTarget: IrFunctionSymbol?
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetClass.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetClass.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetClass.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetClass.kt
index 28dfb5b4a330e..604bfdcd0db7e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetClass.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetClass.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.getClass
+ */
abstract class IrGetClass : IrExpression() {
abstract var argument: IrExpression
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetEnumValue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetEnumValue.kt
similarity index 78%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetEnumValue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetEnumValue.kt
index 134b7bd079742..5be5b4312bb6d 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetEnumValue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetEnumValue.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.getEnumValue
+ */
abstract class IrGetEnumValue : IrGetSingletonValue() {
abstract override val symbol: IrEnumEntrySymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetField.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetField.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetField.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetField.kt
index d02ae855d1f2c..28375391ade12 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetField.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetField.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.getField
+ */
abstract class IrGetField : IrFieldAccessExpression() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitGetField(this, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetObjectValue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetObjectValue.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetObjectValue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetObjectValue.kt
index a80fc6ffe5784..a75709ba97d06 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetObjectValue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetObjectValue.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.getObjectValue
+ */
abstract class IrGetObjectValue : IrGetSingletonValue() {
abstract override val symbol: IrClassSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetSingletonValue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetSingletonValue.kt
similarity index 64%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetSingletonValue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetSingletonValue.kt
index 5783e90abfb4b..821688f803b46 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetSingletonValue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetSingletonValue.kt
@@ -3,6 +3,13 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.getSingletonValue
+ */
abstract class IrGetSingletonValue : IrDeclarationReference()
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetValue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetValue.kt
similarity index 74%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetValue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetValue.kt
index f0f79075a0dd5..e15b0917acd58 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrGetValue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrGetValue.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.getValue
+ */
abstract class IrGetValue : IrValueAccessExpression() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitGetValue(this, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrInstanceInitializerCall.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrInstanceInitializerCall.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrInstanceInitializerCall.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrInstanceInitializerCall.kt
index 8011b52383cea..52beb815d64fd 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrInstanceInitializerCall.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrInstanceInitializerCall.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.instanceInitializerCall
+ */
abstract class IrInstanceInitializerCall : IrExpression() {
abstract val classSymbol: IrClassSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrLocalDelegatedPropertyReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrLocalDelegatedPropertyReference.kt
similarity index 72%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrLocalDelegatedPropertyReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrLocalDelegatedPropertyReference.kt
index a30a5db44bbbb..d14538aae72a6 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrLocalDelegatedPropertyReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrLocalDelegatedPropertyReference.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
@@ -10,9 +13,16 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
-abstract class IrLocalDelegatedPropertyReference : IrCallableReference() {
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.localDelegatedPropertyReference
+ */
+abstract class IrLocalDelegatedPropertyReference :
+ IrCallableReference() {
abstract val delegate: IrVariableSymbol
+
abstract val getter: IrSimpleFunctionSymbol
+
abstract val setter: IrSimpleFunctionSymbol?
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrLoop.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrLoop.kt
similarity index 66%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrLoop.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrLoop.kt
index b61a8c1191a10..dd747ef759593 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrLoop.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrLoop.kt
@@ -3,12 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.loop
+ */
abstract class IrLoop : IrExpression() {
abstract val origin: IrStatementOrigin?
var body: IrExpression? = null
- lateinit var condition: IrExpression
+
+ abstract var condition: IrExpression
+
var label: String? = null
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrPropertyReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrPropertyReference.kt
similarity index 82%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrPropertyReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrPropertyReference.kt
index bc25024667d17..d7d47e0cc7e46 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrPropertyReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrPropertyReference.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
@@ -10,9 +13,15 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.propertyReference
+ */
abstract class IrPropertyReference : IrCallableReference() {
abstract val field: IrFieldSymbol?
+
abstract val getter: IrSimpleFunctionSymbol?
+
abstract val setter: IrSimpleFunctionSymbol?
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrRawFunctionReference.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrRawFunctionReference.kt
similarity index 76%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrRawFunctionReference.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrRawFunctionReference.kt
index 3b5ca6e544f97..051734c8204c6 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrRawFunctionReference.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrRawFunctionReference.kt
@@ -3,16 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
/**
- * Platform-specific low-level reference to function.
- *
- * On JS platform it represents a plain reference to JavaScript function.
- * On JVM platform it represents a MethodHandle constant.
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.rawFunctionReference
*/
abstract class IrRawFunctionReference : IrDeclarationReference() {
abstract override val symbol: IrFunctionSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrReturn.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrReturn.kt
similarity index 85%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrReturn.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrReturn.kt
index 1832eab3c4599..9fbf2df9bfe3e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrReturn.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrReturn.kt
@@ -3,14 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrReturnTargetSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.return
+ */
abstract class IrReturn : IrExpression() {
abstract var value: IrExpression
+
abstract val returnTargetSymbol: IrReturnTargetSymbol
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrReturnableBlock.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrReturnableBlock.kt
similarity index 80%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrReturnableBlock.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrReturnableBlock.kt
index 6c214f0e75c87..ac2d535c18a3c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrReturnableBlock.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrReturnableBlock.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrReturnTarget
@@ -10,6 +13,10 @@ import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.returnableBlock
+ */
abstract class IrReturnableBlock : IrBlock(), IrSymbolOwner, IrReturnTarget {
abstract override val symbol: IrReturnableBlockSymbol
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSetField.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSetField.kt
similarity index 85%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSetField.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSetField.kt
index 90000fa224b99..b259ace57ab0b 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSetField.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSetField.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.setField
+ */
abstract class IrSetField : IrFieldAccessExpression() {
abstract var value: IrExpression
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSetValue.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSetValue.kt
similarity index 85%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSetValue.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSetValue.kt
index 7a437b0fbaa35..10eda9eff06a0 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSetValue.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSetValue.kt
@@ -3,14 +3,22 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.setValue
+ */
abstract class IrSetValue : IrValueAccessExpression() {
abstract override val symbol: IrValueSymbol
+
abstract var value: IrExpression
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSpreadElement.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSpreadElement.kt
similarity index 79%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSpreadElement.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSpreadElement.kt
index 012064677f79e..d977f8298d7fb 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSpreadElement.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSpreadElement.kt
@@ -3,21 +3,27 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
-import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.spreadElement
+ */
abstract class IrSpreadElement : IrElementBase(), IrVarargElement {
abstract var expression: IrExpression
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitSpreadElement(this, data)
- override fun transform(transformer: IrElementTransformer, data: D): IrElement =
- accept(transformer, data) as IrSpreadElement
+ override fun transform(transformer: IrElementTransformer, data: D):
+ IrSpreadElement = accept(transformer, data) as IrSpreadElement
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
expression.accept(visitor, data)
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementContainer.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrStatementContainer.kt
similarity index 56%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementContainer.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrStatementContainer.kt
index 6893e14d8a976..1f0cfe815d353 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementContainer.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrStatementContainer.kt
@@ -3,10 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
-interface IrStatementContainer {
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.statementContainer
+ */
+interface IrStatementContainer : IrElement {
val statements: MutableList
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStringConcatenation.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrStringConcatenation.kt
similarity index 75%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStringConcatenation.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrStringConcatenation.kt
index 16fcadd1b5546..292be9c00862d 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStringConcatenation.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrStringConcatenation.kt
@@ -3,11 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.stringConcatenation
+ */
abstract class IrStringConcatenation : IrExpression() {
abstract val arguments: MutableList
@@ -19,8 +27,6 @@ abstract class IrStringConcatenation : IrExpression() {
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- arguments.forEachIndexed { i, irExpression ->
- arguments[i] = irExpression.transform(transformer, data)
- }
+ arguments.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSuspendableExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSuspendableExpression.kt
similarity index 85%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSuspendableExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSuspendableExpression.kt
index cd22cf82f3608..fcdcc62f41ee3 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSuspendableExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSuspendableExpression.kt
@@ -3,13 +3,21 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.suspendableExpression
+ */
abstract class IrSuspendableExpression : IrExpression() {
abstract var suspensionPointId: IrExpression
+
abstract var result: IrExpression
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSuspensionPoint.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSuspensionPoint.kt
similarity index 84%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSuspensionPoint.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSuspensionPoint.kt
index e55c1b416f46c..3ad78c6e38c8c 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSuspensionPoint.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSuspensionPoint.kt
@@ -3,15 +3,24 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.declarations.IrVariable
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.suspensionPoint
+ */
abstract class IrSuspensionPoint : IrExpression() {
abstract var suspensionPointIdParameter: IrVariable
+
abstract var result: IrExpression
+
abstract var resumeResult: IrExpression
override fun accept(visitor: IrElementVisitor, data: D): R =
@@ -24,7 +33,8 @@ abstract class IrSuspensionPoint : IrExpression() {
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- suspensionPointIdParameter = suspensionPointIdParameter.transform(transformer, data) as IrVariable
+ suspensionPointIdParameter = suspensionPointIdParameter.transform(transformer, data) as
+ IrVariable
result = result.transform(transformer, data)
resumeResult = resumeResult.transform(transformer, data)
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSyntheticBody.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSyntheticBody.kt
similarity index 75%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSyntheticBody.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSyntheticBody.kt
index 747d9e7f90eb1..1d0f37ffeea1e 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrSyntheticBody.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrSyntheticBody.kt
@@ -3,10 +3,17 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.syntheticBody
+ */
abstract class IrSyntheticBody : IrBody() {
abstract val kind: IrSyntheticBodyKind
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrThrow.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrThrow.kt
similarity index 83%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrThrow.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrThrow.kt
index 92d88d2a05bab..c7164a20b1731 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrThrow.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrThrow.kt
@@ -3,11 +3,18 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.throw
+ */
abstract class IrThrow : IrExpression() {
abstract var value: IrExpression
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrTry.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrTry.kt
similarity index 81%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrTry.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrTry.kt
index 1ec8da00a182c..a3dec8fdc9b9f 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrTry.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrTry.kt
@@ -3,11 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.try
+ */
abstract class IrTry : IrExpression() {
abstract var tryResult: IrExpression
@@ -26,9 +34,7 @@ abstract class IrTry : IrExpression() {
override fun transformChildren(transformer: IrElementTransformer, data: D) {
tryResult = tryResult.transform(transformer, data)
- catches.forEachIndexed { i, irCatch ->
- catches[i] = irCatch.transform(transformer, data)
- }
+ catches.transformInPlace(transformer, data)
finallyExpression = finallyExpression?.transform(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrTypeOperatorCall.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrTypeOperatorCall.kt
similarity index 86%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrTypeOperatorCall.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrTypeOperatorCall.kt
index 73266a69115b0..3ec88805c8497 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrTypeOperatorCall.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrTypeOperatorCall.kt
@@ -3,6 +3,9 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
@@ -10,10 +13,17 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.typeOperatorCall
+ */
abstract class IrTypeOperatorCall : IrExpression() {
abstract val operator: IrTypeOperator
+
abstract var argument: IrExpression
+
abstract var typeOperand: IrType
+
abstract val typeOperandClassifier: IrClassifierSymbol
override fun accept(visitor: IrElementVisitor, data: D): R =
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt
similarity index 72%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt
index ca5e1d5416fe0..11c606ad83814 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrValueAccessExpression.kt
@@ -3,11 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.valueAccessExpression
+ */
abstract class IrValueAccessExpression : IrDeclarationReference() {
abstract override val symbol: IrValueSymbol
+
abstract val origin: IrStatementOrigin?
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrVararg.kt
similarity index 77%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrVararg.kt
index 6ebb1b389ce13..8d39f36aefda8 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVararg.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrVararg.kt
@@ -3,12 +3,20 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.types.IrType
+import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.vararg
+ */
abstract class IrVararg : IrExpression() {
abstract var varargElementType: IrType
@@ -22,8 +30,6 @@ abstract class IrVararg : IrExpression() {
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- elements.forEachIndexed { i, irVarargElement ->
- elements[i] = irVarargElement.transform(transformer, data) as IrVarargElement
- }
+ elements.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVarargElement.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrVarargElement.kt
similarity index 65%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVarargElement.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrVarargElement.kt
index 6ca1c3dd51a86..e7c1c331f958f 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrVarargElement.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrVarargElement.kt
@@ -3,8 +3,15 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.IrElement
+/**
+ * A non-leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.varargElement
+ */
interface IrVarargElement : IrElement
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrWhen.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrWhen.kt
similarity index 76%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrWhen.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrWhen.kt
index f3f0f77115d7a..fc5b6548b08da 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrWhen.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrWhen.kt
@@ -3,11 +3,19 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
+import org.jetbrains.kotlin.ir.util.transformInPlace
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.when
+ */
abstract class IrWhen : IrExpression() {
abstract val origin: IrStatementOrigin?
@@ -21,8 +29,6 @@ abstract class IrWhen : IrExpression() {
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- branches.forEachIndexed { i, irBranch ->
- branches[i] = irBranch.transform(transformer, data)
- }
+ branches.transformInPlace(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrWhileLoop.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrWhileLoop.kt
similarity index 84%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrWhileLoop.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrWhileLoop.kt
index 5ea62c7f34721..dfd325f76d929 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrWhileLoop.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/expressions/IrWhileLoop.kt
@@ -3,22 +3,29 @@
* 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.expressions
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
+/**
+ * A leaf IR tree element.
+ * @sample org.jetbrains.kotlin.ir.generator.IrTree.whileLoop
+ */
abstract class IrWhileLoop : IrLoop() {
override fun accept(visitor: IrElementVisitor, data: D): R =
visitor.visitWhileLoop(this, data)
override fun acceptChildren(visitor: IrElementVisitor, data: D) {
- condition.accept(visitor, data)
body?.accept(visitor, data)
+ condition.accept(visitor, data)
}
override fun transformChildren(transformer: IrElementTransformer, data: D) {
- condition = condition.transform(transformer, data)
body = body?.transform(transformer, data)
+ condition = condition.transform(transformer, data)
}
}
diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt
index 45ffddc622830..a03346f500262 100644
--- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt
@@ -1,25 +1,97 @@
/*
- * Copyright 2010-2016 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.visitors
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
-import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.expressions.*
+import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
+import org.jetbrains.kotlin.ir.declarations.IrClass
+import org.jetbrains.kotlin.ir.declarations.IrConstructor
+import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
+import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
+import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration
+import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
+import org.jetbrains.kotlin.ir.declarations.IrField
+import org.jetbrains.kotlin.ir.declarations.IrFile
+import org.jetbrains.kotlin.ir.declarations.IrFunction
+import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
+import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
+import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
+import org.jetbrains.kotlin.ir.declarations.IrProperty
+import org.jetbrains.kotlin.ir.declarations.IrScript
+import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
+import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
+import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
+import org.jetbrains.kotlin.ir.declarations.IrValueParameter
+import org.jetbrains.kotlin.ir.declarations.IrVariable
+import org.jetbrains.kotlin.ir.expressions.IrBlock
+import org.jetbrains.kotlin.ir.expressions.IrBlockBody
+import org.jetbrains.kotlin.ir.expressions.IrBody
+import org.jetbrains.kotlin.ir.expressions.IrBranch
+import org.jetbrains.kotlin.ir.expressions.IrBreak
+import org.jetbrains.kotlin.ir.expressions.IrBreakContinue
+import org.jetbrains.kotlin.ir.expressions.IrCall
+import org.jetbrains.kotlin.ir.expressions.IrCallableReference
+import org.jetbrains.kotlin.ir.expressions.IrCatch
+import org.jetbrains.kotlin.ir.expressions.IrClassReference
+import org.jetbrains.kotlin.ir.expressions.IrComposite
+import org.jetbrains.kotlin.ir.expressions.IrConst
+import org.jetbrains.kotlin.ir.expressions.IrConstantArray
+import org.jetbrains.kotlin.ir.expressions.IrConstantObject
+import org.jetbrains.kotlin.ir.expressions.IrConstantPrimitive
+import org.jetbrains.kotlin.ir.expressions.IrConstantValue
+import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
+import org.jetbrains.kotlin.ir.expressions.IrContinue
+import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
+import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrDoWhileLoop
+import org.jetbrains.kotlin.ir.expressions.IrDynamicExpression
+import org.jetbrains.kotlin.ir.expressions.IrDynamicMemberExpression
+import org.jetbrains.kotlin.ir.expressions.IrDynamicOperatorExpression
+import org.jetbrains.kotlin.ir.expressions.IrElseBranch
+import org.jetbrains.kotlin.ir.expressions.IrEnumConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrErrorCallExpression
+import org.jetbrains.kotlin.ir.expressions.IrErrorExpression
+import org.jetbrains.kotlin.ir.expressions.IrExpression
+import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
+import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrGetClass
+import org.jetbrains.kotlin.ir.expressions.IrGetEnumValue
+import org.jetbrains.kotlin.ir.expressions.IrGetField
+import org.jetbrains.kotlin.ir.expressions.IrGetObjectValue
+import org.jetbrains.kotlin.ir.expressions.IrGetSingletonValue
+import org.jetbrains.kotlin.ir.expressions.IrGetValue
+import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
+import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference
+import org.jetbrains.kotlin.ir.expressions.IrLoop
+import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrPropertyReference
+import org.jetbrains.kotlin.ir.expressions.IrRawFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrReturn
+import org.jetbrains.kotlin.ir.expressions.IrSetField
+import org.jetbrains.kotlin.ir.expressions.IrSetValue
+import org.jetbrains.kotlin.ir.expressions.IrSpreadElement
+import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation
+import org.jetbrains.kotlin.ir.expressions.IrSuspendableExpression
+import org.jetbrains.kotlin.ir.expressions.IrSuspensionPoint
+import org.jetbrains.kotlin.ir.expressions.IrSyntheticBody
+import org.jetbrains.kotlin.ir.expressions.IrThrow
+import org.jetbrains.kotlin.ir.expressions.IrTry
+import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
+import org.jetbrains.kotlin.ir.expressions.IrValueAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrVararg
+import org.jetbrains.kotlin.ir.expressions.IrWhen
+import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
interface IrElementTransformer : IrElementVisitor {
override fun visitElement(element: IrElement, data: D): IrElement {
@@ -27,130 +99,230 @@ interface IrElementTransformer : IrElementVisitor {
return element
}
- override fun visitModuleFragment(declaration: IrModuleFragment, data: D): IrModuleFragment {
+ override fun visitDeclaration(declaration: IrDeclarationBase, data: D): IrStatement {
declaration.transformChildren(this, data)
return declaration
}
- override fun visitFile(declaration: IrFile, data: D): IrFile {
+ override fun visitValueParameter(declaration: IrValueParameter, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration,
+ data)
+
+ override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitTypeParameter(declaration: IrTypeParameter, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitFunction(declaration: IrFunction, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitConstructor(declaration: IrConstructor, data: D) =
+ visitFunction(declaration, data)
+
+ override fun visitEnumEntry(declaration: IrEnumEntry, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitField(declaration: IrField, data: D) = visitDeclaration(declaration,
+ data)
+
+ override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty,
+ data: D) = visitDeclaration(declaration, data)
+
+ override fun visitModuleFragment(declaration: IrModuleFragment, data: D):
+ IrModuleFragment {
declaration.transformChildren(this, data)
return declaration
}
- override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D): IrExternalPackageFragment {
+ override fun visitProperty(declaration: IrProperty, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitScript(declaration: IrScript, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) =
+ visitFunction(declaration, data)
+
+ override fun visitTypeAlias(declaration: IrTypeAlias, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitVariable(declaration: IrVariable, data: D) =
+ visitDeclaration(declaration, data)
+
+ override fun visitPackageFragment(declaration: IrPackageFragment, data: D) =
+ visitElement(declaration, data)
+
+ override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment,
+ data: D): IrExternalPackageFragment {
declaration.transformChildren(this, data)
return declaration
}
- override fun visitDeclaration(declaration: IrDeclarationBase, data: D): IrStatement {
+ override fun visitFile(declaration: IrFile, data: D): IrFile {
declaration.transformChildren(this, data)
return declaration
}
- override fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data)
- override fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data)
- override fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data)
- override fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data)
- override fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data)
- override fun visitProperty(declaration: IrProperty, data: D) = visitDeclaration(declaration, data)
- override fun visitField(declaration: IrField, data: D) = visitDeclaration(declaration, data)
- override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: D) = visitDeclaration(declaration, data)
- override fun visitEnumEntry(declaration: IrEnumEntry, data: D) = visitDeclaration(declaration, data)
- override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: D) = visitDeclaration(declaration, data)
- override fun visitVariable(declaration: IrVariable, data: D) = visitDeclaration(declaration, data)
- override fun visitTypeParameter(declaration: IrTypeParameter, data: D) = visitDeclaration(declaration, data)
- override fun visitValueParameter(declaration: IrValueParameter, data: D) = visitDeclaration(declaration, data)
- override fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data)
+ override fun visitExpression(expression: IrExpression, data: D): IrExpression {
+ expression.transformChildren(this, data)
+ return expression
+ }
override fun visitBody(body: IrBody, data: D): IrBody {
body.transformChildren(this, data)
return body
}
- override fun visitExpressionBody(body: IrExpressionBody, data: D) = visitBody(body, data)
+ override fun visitExpressionBody(body: IrExpressionBody, data: D) = visitBody(body,
+ data)
+
override fun visitBlockBody(body: IrBlockBody, data: D) = visitBody(body, data)
+
+ override fun visitDeclarationReference(expression: IrDeclarationReference, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: D):
+ IrElement = visitDeclarationReference(expression, data)
+
+ override fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: D):
+ IrElement = visitMemberAccess(expression, data)
+
+ override fun visitConstructorCall(expression: IrConstructorCall, data: D): IrElement =
+ visitFunctionAccess(expression, data)
+
+ override fun visitSingletonReference(expression: IrGetSingletonValue, data: D) =
+ visitDeclarationReference(expression, data)
+
+ override fun visitGetObjectValue(expression: IrGetObjectValue, data: D) =
+ visitSingletonReference(expression, data)
+
+ override fun visitGetEnumValue(expression: IrGetEnumValue, data: D) =
+ visitSingletonReference(expression, data)
+
+ override fun visitRawFunctionReference(expression: IrRawFunctionReference, data: D) =
+ visitDeclarationReference(expression, data)
+
+ override fun visitContainerExpression(expression: IrContainerExpression, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitBlock(expression: IrBlock, data: D) =
+ visitContainerExpression(expression, data)
+
+ override fun visitComposite(expression: IrComposite, data: D) =
+ visitContainerExpression(expression, data)
+
override fun visitSyntheticBody(body: IrSyntheticBody, data: D) = visitBody(body, data)
- override fun visitSuspendableExpression(expression: IrSuspendableExpression, data: D) = visitExpression(expression, data)
- override fun visitSuspensionPoint(expression: IrSuspensionPoint, data: D) = visitExpression(expression, data)
+ override fun visitBreakContinue(jump: IrBreakContinue, data: D) = visitExpression(jump,
+ data)
- override fun visitExpression(expression: IrExpression, data: D): IrExpression {
- expression.transformChildren(this, data)
- return expression
- }
+ override fun visitBreak(jump: IrBreak, data: D) = visitBreakContinue(jump, data)
+
+ override fun visitContinue(jump: IrContinue, data: D) = visitBreakContinue(jump, data)
+
+ override fun visitCall(expression: IrCall, data: D) = visitFunctionAccess(expression,
+ data)
+
+ override fun visitCallableReference(expression: IrCallableReference<*>, data: D) =
+ visitMemberAccess(expression, data)
+
+ override fun visitFunctionReference(expression: IrFunctionReference, data: D) =
+ visitCallableReference(expression, data)
- override fun visitConst(expression: IrConst<*>, data: D) = visitExpression(expression, data)
- override fun visitVararg(expression: IrVararg, data: D) = visitExpression(expression, data)
- override fun visitConstantValue(expression: IrConstantValue, data: D): IrConstantValue {
+ override fun visitPropertyReference(expression: IrPropertyReference, data: D) =
+ visitCallableReference(expression, data)
+
+ override
+ fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference,
+ data: D) = visitCallableReference(expression, data)
+
+ override fun visitClassReference(expression: IrClassReference, data: D) =
+ visitDeclarationReference(expression, data)
+
+ override fun visitConst(expression: IrConst<*>, data: D) = visitExpression(expression,
+ data)
+
+ override fun visitConstantValue(expression: IrConstantValue, data: D):
+ IrConstantValue {
expression.transformChildren(this, data)
return expression
}
- override fun visitConstantObject(expression: IrConstantObject, data: D) = visitConstantValue(expression, data)
- override fun visitConstantPrimitive(expression: IrConstantPrimitive, data: D) = visitConstantValue(expression, data)
- override fun visitConstantArray(expression: IrConstantArray, data: D) = visitConstantValue(expression, data)
+ override fun visitConstantPrimitive(expression: IrConstantPrimitive, data: D) =
+ visitConstantValue(expression, data)
- override fun visitSpreadElement(spread: IrSpreadElement, data: D): IrSpreadElement {
- spread.transformChildren(this, data)
- return spread
- }
+ override fun visitConstantObject(expression: IrConstantObject, data: D) =
+ visitConstantValue(expression, data)
- override fun visitContainerExpression(expression: IrContainerExpression, data: D) = visitExpression(expression, data)
- override fun visitBlock(expression: IrBlock, data: D) = visitContainerExpression(expression, data)
- override fun visitComposite(expression: IrComposite, data: D) = visitContainerExpression(expression, data)
- override fun visitStringConcatenation(expression: IrStringConcatenation, data: D) = visitExpression(expression, data)
+ override fun visitConstantArray(expression: IrConstantArray, data: D) =
+ visitConstantValue(expression, data)
- override fun visitDeclarationReference(expression: IrDeclarationReference, data: D) = visitExpression(expression, data)
- override fun visitSingletonReference(expression: IrGetSingletonValue, data: D) = visitDeclarationReference(expression, data)
- override fun visitGetObjectValue(expression: IrGetObjectValue, data: D) = visitSingletonReference(expression, data)
- override fun visitGetEnumValue(expression: IrGetEnumValue, data: D) = visitSingletonReference(expression, data)
- override fun visitValueAccess(expression: IrValueAccessExpression, data: D) = visitDeclarationReference(expression, data)
- override fun visitGetValue(expression: IrGetValue, data: D) = visitValueAccess(expression, data)
- override fun visitSetValue(expression: IrSetValue, data: D) = visitValueAccess(expression, data)
- override fun visitFieldAccess(expression: IrFieldAccessExpression, data: D) = visitDeclarationReference(expression, data)
- override fun visitGetField(expression: IrGetField, data: D) = visitFieldAccess(expression, data)
- override fun visitSetField(expression: IrSetField, data: D) = visitFieldAccess(expression, data)
- override fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: D): IrElement =
- visitDeclarationReference(expression, data)
+ override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall,
+ data: D) = visitFunctionAccess(expression, data)
- override fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: D): IrElement = visitMemberAccess(expression, data)
- override fun visitCall(expression: IrCall, data: D) = visitFunctionAccess(expression, data)
- override fun visitConstructorCall(expression: IrConstructorCall, data: D): IrElement = visitFunctionAccess(expression, data)
- override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitFunctionAccess(expression, data)
- override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitFunctionAccess(expression, data)
- override fun visitGetClass(expression: IrGetClass, data: D) = visitExpression(expression, data)
+ override fun visitDynamicExpression(expression: IrDynamicExpression, data: D) =
+ visitExpression(expression, data)
- override fun visitCallableReference(expression: IrCallableReference<*>, data: D) = visitMemberAccess(expression, data)
- override fun visitFunctionReference(expression: IrFunctionReference, data: D) = visitCallableReference(expression, data)
- override fun visitPropertyReference(expression: IrPropertyReference, data: D) = visitCallableReference(expression, data)
- override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference, data: D) =
- visitCallableReference(expression, data)
+ override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression,
+ data: D) = visitDynamicExpression(expression, data)
- override fun visitRawFunctionReference(expression: IrRawFunctionReference, data: D) = visitDeclarationReference(expression, data)
+ override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression,
+ data: D) = visitDynamicExpression(expression, data)
- override fun visitFunctionExpression(expression: IrFunctionExpression, data: D): IrElement = visitExpression(expression, data)
+ override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) =
+ visitFunctionAccess(expression, data)
- override fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data)
+ override fun visitErrorExpression(expression: IrErrorExpression, data: D) =
+ visitExpression(expression, data)
- override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D) = visitExpression(expression, data)
+ override fun visitErrorCallExpression(expression: IrErrorCallExpression, data: D) =
+ visitErrorExpression(expression, data)
- override fun visitTypeOperator(expression: IrTypeOperatorCall, data: D) = visitExpression(expression, data)
+ override fun visitFieldAccess(expression: IrFieldAccessExpression, data: D) =
+ visitDeclarationReference(expression, data)
- override fun visitWhen(expression: IrWhen, data: D) = visitExpression(expression, data)
+ override fun visitGetField(expression: IrGetField, data: D) =
+ visitFieldAccess(expression, data)
- override fun visitBranch(branch: IrBranch, data: D): IrBranch {
- branch.transformChildren(this, data)
- return branch
- }
+ override fun visitSetField(expression: IrSetField, data: D) =
+ visitFieldAccess(expression, data)
- override fun visitElseBranch(branch: IrElseBranch, data: D): IrElseBranch {
- branch.transformChildren(this, data)
- return branch
- }
+ override fun visitFunctionExpression(expression: IrFunctionExpression, data: D):
+ IrElement = visitExpression(expression, data)
+
+ override fun visitGetClass(expression: IrGetClass, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall,
+ data: D) = visitExpression(expression, data)
override fun visitLoop(loop: IrLoop, data: D) = visitExpression(loop, data)
+
override fun visitWhileLoop(loop: IrWhileLoop, data: D) = visitLoop(loop, data)
+
override fun visitDoWhileLoop(loop: IrDoWhileLoop, data: D) = visitLoop(loop, data)
+
+ override fun visitReturn(expression: IrReturn, data: D) = visitExpression(expression,
+ data)
+
+ override fun visitStringConcatenation(expression: IrStringConcatenation, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitSuspensionPoint(expression: IrSuspensionPoint, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitSuspendableExpression(expression: IrSuspendableExpression, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitThrow(expression: IrThrow, data: D) = visitExpression(expression,
+ data)
+
override fun visitTry(aTry: IrTry, data: D) = visitExpression(aTry, data)
override fun visitCatch(aCatch: IrCatch, data: D): IrCatch {
@@ -158,18 +330,35 @@ interface IrElementTransformer : IrElementVisitor {
return aCatch
}
- override fun visitBreakContinue(jump: IrBreakContinue, data: D) = visitExpression(jump, data)
- override fun visitBreak(jump: IrBreak, data: D) = visitBreakContinue(jump, data)
- override fun visitContinue(jump: IrContinue, data: D) = visitBreakContinue(jump, data)
+ override fun visitTypeOperator(expression: IrTypeOperatorCall, data: D) =
+ visitExpression(expression, data)
+
+ override fun visitValueAccess(expression: IrValueAccessExpression, data: D) =
+ visitDeclarationReference(expression, data)
- override fun visitReturn(expression: IrReturn, data: D) = visitExpression(expression, data)
- override fun visitThrow(expression: IrThrow, data: D) = visitExpression(expression, data)
+ override fun visitGetValue(expression: IrGetValue, data: D) =
+ visitValueAccess(expression, data)
- override fun visitDynamicExpression(expression: IrDynamicExpression, data: D) = visitExpression(expression, data)
- override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression, data: D) = visitDynamicExpression(expression, data)
- override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression, data: D) = visitDynamicExpression(expression, data)
+ override fun visitSetValue(expression: IrSetValue, data: D) =
+ visitValueAccess(expression, data)
+
+ override fun visitVararg(expression: IrVararg, data: D) = visitExpression(expression,
+ data)
+
+ override fun visitSpreadElement(spread: IrSpreadElement, data: D): IrSpreadElement {
+ spread.transformChildren(this, data)
+ return spread
+ }
- override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: D) = visitDeclaration(declaration, data)
- override fun visitErrorExpression(expression: IrErrorExpression, data: D) = visitExpression(expression, data)
- override fun visitErrorCallExpression(expression: IrErrorCallExpression, data: D) = visitErrorExpression(expression, data)
+ override fun visitWhen(expression: IrWhen, data: D) = visitExpression(expression, data)
+
+ override fun visitBranch(branch: IrBranch, data: D): IrBranch {
+ branch.transformChildren(this, data)
+ return branch
+ }
+
+ override fun visitElseBranch(branch: IrElseBranch, data: D): IrElseBranch {
+ branch.transformChildren(this, data)
+ return branch
+ }
}
diff --git a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt
index 9dbda6c425b78..131fbcb3a5de6 100644
--- a/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt
@@ -1,126 +1,321 @@
/*
- * Copyright 2010-2016 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.visitors
import org.jetbrains.kotlin.ir.IrElement
-import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.expressions.*
+import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
+import org.jetbrains.kotlin.ir.declarations.IrClass
+import org.jetbrains.kotlin.ir.declarations.IrConstructor
+import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
+import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
+import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration
+import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
+import org.jetbrains.kotlin.ir.declarations.IrField
+import org.jetbrains.kotlin.ir.declarations.IrFile
+import org.jetbrains.kotlin.ir.declarations.IrFunction
+import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
+import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
+import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
+import org.jetbrains.kotlin.ir.declarations.IrProperty
+import org.jetbrains.kotlin.ir.declarations.IrScript
+import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
+import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
+import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
+import org.jetbrains.kotlin.ir.declarations.IrValueParameter
+import org.jetbrains.kotlin.ir.declarations.IrVariable
+import org.jetbrains.kotlin.ir.expressions.IrBlock
+import org.jetbrains.kotlin.ir.expressions.IrBlockBody
+import org.jetbrains.kotlin.ir.expressions.IrBody
+import org.jetbrains.kotlin.ir.expressions.IrBranch
+import org.jetbrains.kotlin.ir.expressions.IrBreak
+import org.jetbrains.kotlin.ir.expressions.IrBreakContinue
+import org.jetbrains.kotlin.ir.expressions.IrCall
+import org.jetbrains.kotlin.ir.expressions.IrCallableReference
+import org.jetbrains.kotlin.ir.expressions.IrCatch
+import org.jetbrains.kotlin.ir.expressions.IrClassReference
+import org.jetbrains.kotlin.ir.expressions.IrComposite
+import org.jetbrains.kotlin.ir.expressions.IrConst
+import org.jetbrains.kotlin.ir.expressions.IrConstantArray
+import org.jetbrains.kotlin.ir.expressions.IrConstantObject
+import org.jetbrains.kotlin.ir.expressions.IrConstantPrimitive
+import org.jetbrains.kotlin.ir.expressions.IrConstantValue
+import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
+import org.jetbrains.kotlin.ir.expressions.IrContinue
+import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
+import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrDoWhileLoop
+import org.jetbrains.kotlin.ir.expressions.IrDynamicExpression
+import org.jetbrains.kotlin.ir.expressions.IrDynamicMemberExpression
+import org.jetbrains.kotlin.ir.expressions.IrDynamicOperatorExpression
+import org.jetbrains.kotlin.ir.expressions.IrElseBranch
+import org.jetbrains.kotlin.ir.expressions.IrEnumConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrErrorCallExpression
+import org.jetbrains.kotlin.ir.expressions.IrErrorExpression
+import org.jetbrains.kotlin.ir.expressions.IrExpression
+import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
+import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrGetClass
+import org.jetbrains.kotlin.ir.expressions.IrGetEnumValue
+import org.jetbrains.kotlin.ir.expressions.IrGetField
+import org.jetbrains.kotlin.ir.expressions.IrGetObjectValue
+import org.jetbrains.kotlin.ir.expressions.IrGetSingletonValue
+import org.jetbrains.kotlin.ir.expressions.IrGetValue
+import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
+import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference
+import org.jetbrains.kotlin.ir.expressions.IrLoop
+import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrPropertyReference
+import org.jetbrains.kotlin.ir.expressions.IrRawFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrReturn
+import org.jetbrains.kotlin.ir.expressions.IrSetField
+import org.jetbrains.kotlin.ir.expressions.IrSetValue
+import org.jetbrains.kotlin.ir.expressions.IrSpreadElement
+import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation
+import org.jetbrains.kotlin.ir.expressions.IrSuspendableExpression
+import org.jetbrains.kotlin.ir.expressions.IrSuspensionPoint
+import org.jetbrains.kotlin.ir.expressions.IrSyntheticBody
+import org.jetbrains.kotlin.ir.expressions.IrThrow
+import org.jetbrains.kotlin.ir.expressions.IrTry
+import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
+import org.jetbrains.kotlin.ir.expressions.IrValueAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrVararg
+import org.jetbrains.kotlin.ir.expressions.IrWhen
+import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
interface IrElementVisitor {
fun visitElement(element: IrElement, data: D): R
- fun visitModuleFragment(declaration: IrModuleFragment, data: D) = visitElement(declaration, data)
- fun visitPackageFragment(declaration: IrPackageFragment, data: D) = visitElement(declaration, data)
- fun visitFile(declaration: IrFile, data: D) = visitPackageFragment(declaration, data)
- fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D) = visitPackageFragment(declaration, data)
- fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data)
-
- fun visitDeclaration(declaration: IrDeclarationBase, data: D) = visitElement(declaration, data)
- fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data)
- fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data)
- fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data)
- fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data)
- fun visitProperty(declaration: IrProperty, data: D) = visitDeclaration(declaration, data)
- fun visitField(declaration: IrField, data: D) = visitDeclaration(declaration, data)
- fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: D) = visitDeclaration(declaration, data)
- fun visitVariable(declaration: IrVariable, data: D) = visitDeclaration(declaration, data)
- fun visitEnumEntry(declaration: IrEnumEntry, data: D) = visitDeclaration(declaration, data)
- fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: D) = visitDeclaration(declaration, data)
- fun visitTypeParameter(declaration: IrTypeParameter, data: D) = visitDeclaration(declaration, data)
- fun visitValueParameter(declaration: IrValueParameter, data: D) = visitDeclaration(declaration, data)
- fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data)
-
- fun visitBody(body: IrBody, data: D) = visitElement(body, data)
- fun visitExpressionBody(body: IrExpressionBody, data: D) = visitBody(body, data)
- fun visitBlockBody(body: IrBlockBody, data: D) = visitBody(body, data)
- fun visitSyntheticBody(body: IrSyntheticBody, data: D) = visitBody(body, data)
-
- fun visitSuspendableExpression(expression: IrSuspendableExpression, data: D) = visitExpression(expression, data)
- fun visitSuspensionPoint(expression: IrSuspensionPoint, data: D) = visitExpression(expression, data)
-
- fun visitExpression(expression: IrExpression, data: D) = visitElement(expression, data)
- fun visitConst(expression: IrConst<*>, data: D) = visitExpression(expression, data)
- fun visitConstantValue(expression: IrConstantValue, data: D) = visitExpression(expression, data)
- fun visitConstantObject(expression: IrConstantObject, data: D) = visitConstantValue(expression, data)
- fun visitConstantPrimitive(expression: IrConstantPrimitive, data: D) = visitConstantValue(expression, data)
- fun visitConstantArray(expression: IrConstantArray, data: D) = visitConstantValue(expression, data)
- fun visitVararg(expression: IrVararg, data: D) = visitExpression(expression, data)
- fun visitSpreadElement(spread: IrSpreadElement, data: D) = visitElement(spread, data)
-
- fun visitContainerExpression(expression: IrContainerExpression, data: D) = visitExpression(expression, data)
- fun visitBlock(expression: IrBlock, data: D) = visitContainerExpression(expression, data)
- fun visitComposite(expression: IrComposite, data: D) = visitContainerExpression(expression, data)
- fun visitStringConcatenation(expression: IrStringConcatenation, data: D) = visitExpression(expression, data)
-
- fun visitDeclarationReference(expression: IrDeclarationReference, data: D) = visitExpression(expression, data)
- fun visitSingletonReference(expression: IrGetSingletonValue, data: D) = visitDeclarationReference(expression, data)
- fun visitGetObjectValue(expression: IrGetObjectValue, data: D) = visitSingletonReference(expression, data)
- fun visitGetEnumValue(expression: IrGetEnumValue, data: D) = visitSingletonReference(expression, data)
- fun visitValueAccess(expression: IrValueAccessExpression, data: D) = visitDeclarationReference(expression, data)
- fun visitGetValue(expression: IrGetValue, data: D) = visitValueAccess(expression, data)
- fun visitSetValue(expression: IrSetValue, data: D) = visitValueAccess(expression, data)
- fun visitFieldAccess(expression: IrFieldAccessExpression, data: D) = visitDeclarationReference(expression, data)
- fun visitGetField(expression: IrGetField, data: D) = visitFieldAccess(expression, data)
- fun visitSetField(expression: IrSetField, data: D) = visitFieldAccess(expression, data)
-
- fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: D) = visitDeclarationReference(expression, data)
- fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: D) = visitMemberAccess(expression, data)
- fun visitCall(expression: IrCall, data: D) = visitFunctionAccess(expression, data)
- fun visitConstructorCall(expression: IrConstructorCall, data: D) = visitFunctionAccess(expression, data)
- fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitFunctionAccess(expression, data)
- fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitFunctionAccess(expression, data)
- fun visitGetClass(expression: IrGetClass, data: D) = visitExpression(expression, data)
-
- fun visitCallableReference(expression: IrCallableReference<*>, data: D) = visitMemberAccess(expression, data)
- fun visitFunctionReference(expression: IrFunctionReference, data: D) = visitCallableReference(expression, data)
- fun visitPropertyReference(expression: IrPropertyReference, data: D) = visitCallableReference(expression, data)
- fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference, data: D) =
- visitCallableReference(expression, data)
-
- fun visitRawFunctionReference(expression: IrRawFunctionReference, data: D) = visitDeclarationReference(expression, data)
-
- fun visitFunctionExpression(expression: IrFunctionExpression, data: D) = visitExpression(expression, data)
-
- fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data)
-
- fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D) = visitExpression(expression, data)
-
- fun visitTypeOperator(expression: IrTypeOperatorCall, data: D) = visitExpression(expression, data)
-
- fun visitWhen(expression: IrWhen, data: D) = visitExpression(expression, data)
- fun visitBranch(branch: IrBranch, data: D) = visitElement(branch, data)
- fun visitElseBranch(branch: IrElseBranch, data: D) = visitBranch(branch, data)
- fun visitLoop(loop: IrLoop, data: D) = visitExpression(loop, data)
- fun visitWhileLoop(loop: IrWhileLoop, data: D) = visitLoop(loop, data)
- fun visitDoWhileLoop(loop: IrDoWhileLoop, data: D) = visitLoop(loop, data)
- fun visitTry(aTry: IrTry, data: D) = visitExpression(aTry, data)
- fun visitCatch(aCatch: IrCatch, data: D) = visitElement(aCatch, data)
-
- fun visitBreakContinue(jump: IrBreakContinue, data: D) = visitExpression(jump, data)
- fun visitBreak(jump: IrBreak, data: D) = visitBreakContinue(jump, data)
- fun visitContinue(jump: IrContinue, data: D) = visitBreakContinue(jump, data)
-
- fun visitReturn(expression: IrReturn, data: D) = visitExpression(expression, data)
- fun visitThrow(expression: IrThrow, data: D) = visitExpression(expression, data)
-
- fun visitDynamicExpression(expression: IrDynamicExpression, data: D) = visitExpression(expression, data)
- fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression, data: D) = visitDynamicExpression(expression, data)
- fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression, data: D) = visitDynamicExpression(expression, data)
-
- fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: D) = visitDeclaration(declaration, data)
- fun visitErrorExpression(expression: IrErrorExpression, data: D) = visitExpression(expression, data)
- fun visitErrorCallExpression(expression: IrErrorCallExpression, data: D) = visitErrorExpression(expression, data)
+
+ fun visitDeclaration(declaration: IrDeclarationBase, data: D): R =
+ visitElement(declaration, data)
+
+ fun visitValueParameter(declaration: IrValueParameter, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitClass(declaration: IrClass, data: D): R = visitDeclaration(declaration, data)
+
+ fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitTypeParameter(declaration: IrTypeParameter, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitFunction(declaration: IrFunction, data: D): R = visitDeclaration(declaration,
+ data)
+
+ fun visitConstructor(declaration: IrConstructor, data: D): R =
+ visitFunction(declaration, data)
+
+ fun visitEnumEntry(declaration: IrEnumEntry, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitField(declaration: IrField, data: D): R = visitDeclaration(declaration, data)
+
+ fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitModuleFragment(declaration: IrModuleFragment, data: D): R =
+ visitElement(declaration, data)
+
+ fun visitProperty(declaration: IrProperty, data: D): R = visitDeclaration(declaration,
+ data)
+
+ fun visitScript(declaration: IrScript, data: D): R = visitDeclaration(declaration,
+ data)
+
+ fun visitSimpleFunction(declaration: IrSimpleFunction, data: D): R =
+ visitFunction(declaration, data)
+
+ fun visitTypeAlias(declaration: IrTypeAlias, data: D): R =
+ visitDeclaration(declaration, data)
+
+ fun visitVariable(declaration: IrVariable, data: D): R = visitDeclaration(declaration,
+ data)
+
+ fun visitPackageFragment(declaration: IrPackageFragment, data: D): R =
+ visitElement(declaration, data)
+
+ fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D): R =
+ visitPackageFragment(declaration, data)
+
+ fun visitFile(declaration: IrFile, data: D): R = visitPackageFragment(declaration,
+ data)
+
+ fun visitExpression(expression: IrExpression, data: D): R = visitElement(expression,
+ data)
+
+ fun visitBody(body: IrBody, data: D): R = visitElement(body, data)
+
+ fun visitExpressionBody(body: IrExpressionBody, data: D): R = visitBody(body, data)
+
+ fun visitBlockBody(body: IrBlockBody, data: D): R = visitBody(body, data)
+
+ fun visitDeclarationReference(expression: IrDeclarationReference, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: D): R =
+ visitDeclarationReference(expression, data)
+
+ fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: D): R =
+ visitMemberAccess(expression, data)
+
+ fun visitConstructorCall(expression: IrConstructorCall, data: D): R =
+ visitFunctionAccess(expression, data)
+
+ fun visitSingletonReference(expression: IrGetSingletonValue, data: D): R =
+ visitDeclarationReference(expression, data)
+
+ fun visitGetObjectValue(expression: IrGetObjectValue, data: D): R =
+ visitSingletonReference(expression, data)
+
+ fun visitGetEnumValue(expression: IrGetEnumValue, data: D): R =
+ visitSingletonReference(expression, data)
+
+ fun visitRawFunctionReference(expression: IrRawFunctionReference, data: D): R =
+ visitDeclarationReference(expression, data)
+
+ fun visitContainerExpression(expression: IrContainerExpression, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitBlock(expression: IrBlock, data: D): R = visitContainerExpression(expression,
+ data)
+
+ fun visitComposite(expression: IrComposite, data: D): R =
+ visitContainerExpression(expression, data)
+
+ fun visitSyntheticBody(body: IrSyntheticBody, data: D): R = visitBody(body, data)
+
+ fun visitBreakContinue(jump: IrBreakContinue, data: D): R = visitExpression(jump, data)
+
+ fun visitBreak(jump: IrBreak, data: D): R = visitBreakContinue(jump, data)
+
+ fun visitContinue(jump: IrContinue, data: D): R = visitBreakContinue(jump, data)
+
+ fun visitCall(expression: IrCall, data: D): R = visitFunctionAccess(expression, data)
+
+ fun visitCallableReference(expression: IrCallableReference<*>, data: D): R =
+ visitMemberAccess(expression, data)
+
+ fun visitFunctionReference(expression: IrFunctionReference, data: D): R =
+ visitCallableReference(expression, data)
+
+ fun visitPropertyReference(expression: IrPropertyReference, data: D): R =
+ visitCallableReference(expression, data)
+
+ fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference,
+ data: D): R = visitCallableReference(expression, data)
+
+ fun visitClassReference(expression: IrClassReference, data: D): R =
+ visitDeclarationReference(expression, data)
+
+ fun visitConst(expression: IrConst<*>, data: D): R = visitExpression(expression, data)
+
+ fun visitConstantValue(expression: IrConstantValue, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitConstantPrimitive(expression: IrConstantPrimitive, data: D): R =
+ visitConstantValue(expression, data)
+
+ fun visitConstantObject(expression: IrConstantObject, data: D): R =
+ visitConstantValue(expression, data)
+
+ fun visitConstantArray(expression: IrConstantArray, data: D): R =
+ visitConstantValue(expression, data)
+
+ fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D): R
+ = visitFunctionAccess(expression, data)
+
+ fun visitDynamicExpression(expression: IrDynamicExpression, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression, data: D): R
+ = visitDynamicExpression(expression, data)
+
+ fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression, data: D): R =
+ visitDynamicExpression(expression, data)
+
+ fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D): R =
+ visitFunctionAccess(expression, data)
+
+ fun visitErrorExpression(expression: IrErrorExpression, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitErrorCallExpression(expression: IrErrorCallExpression, data: D): R =
+ visitErrorExpression(expression, data)
+
+ fun visitFieldAccess(expression: IrFieldAccessExpression, data: D): R =
+ visitDeclarationReference(expression, data)
+
+ fun visitGetField(expression: IrGetField, data: D): R = visitFieldAccess(expression,
+ data)
+
+ fun visitSetField(expression: IrSetField, data: D): R = visitFieldAccess(expression,
+ data)
+
+ fun visitFunctionExpression(expression: IrFunctionExpression, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitGetClass(expression: IrGetClass, data: D): R = visitExpression(expression,
+ data)
+
+ fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitLoop(loop: IrLoop, data: D): R = visitExpression(loop, data)
+
+ fun visitWhileLoop(loop: IrWhileLoop, data: D): R = visitLoop(loop, data)
+
+ fun visitDoWhileLoop(loop: IrDoWhileLoop, data: D): R = visitLoop(loop, data)
+
+ fun visitReturn(expression: IrReturn, data: D): R = visitExpression(expression, data)
+
+ fun visitStringConcatenation(expression: IrStringConcatenation, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitSuspensionPoint(expression: IrSuspensionPoint, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitSuspendableExpression(expression: IrSuspendableExpression, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitThrow(expression: IrThrow, data: D): R = visitExpression(expression, data)
+
+ fun visitTry(aTry: IrTry, data: D): R = visitExpression(aTry, data)
+
+ fun visitCatch(aCatch: IrCatch, data: D): R = visitElement(aCatch, data)
+
+ fun visitTypeOperator(expression: IrTypeOperatorCall, data: D): R =
+ visitExpression(expression, data)
+
+ fun visitValueAccess(expression: IrValueAccessExpression, data: D): R =
+ visitDeclarationReference(expression, data)
+
+ fun visitGetValue(expression: IrGetValue, data: D): R = visitValueAccess(expression,
+ data)
+
+ fun visitSetValue(expression: IrSetValue, data: D): R = visitValueAccess(expression,
+ data)
+
+ fun visitVararg(expression: IrVararg, data: D): R = visitExpression(expression, data)
+
+ fun visitSpreadElement(spread: IrSpreadElement, data: D): R = visitElement(spread,
+ data)
+
+ fun visitWhen(expression: IrWhen, data: D): R = visitExpression(expression, data)
+
+ fun visitBranch(branch: IrBranch, data: D): R = visitElement(branch, data)
+
+ fun visitElseBranch(branch: IrElseBranch, data: D): R = visitBranch(branch, data)
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt
similarity index 50%
rename from compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt
rename to compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt
index 2edb4d4ccbf9a..7618196af6e91 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt
+++ b/compiler/ir/ir.tree/gen/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt
@@ -1,280 +1,523 @@
/*
- * Copyright 2010-2016 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Copyright 2010-2021 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
+//DO NOT MODIFY IT MANUALLY
+
package org.jetbrains.kotlin.ir.visitors
import org.jetbrains.kotlin.ir.IrElement
-import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.expressions.*
+import org.jetbrains.kotlin.ir.declarations.IrAnonymousInitializer
+import org.jetbrains.kotlin.ir.declarations.IrClass
+import org.jetbrains.kotlin.ir.declarations.IrConstructor
+import org.jetbrains.kotlin.ir.declarations.IrDeclarationBase
+import org.jetbrains.kotlin.ir.declarations.IrEnumEntry
+import org.jetbrains.kotlin.ir.declarations.IrErrorDeclaration
+import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
+import org.jetbrains.kotlin.ir.declarations.IrField
+import org.jetbrains.kotlin.ir.declarations.IrFile
+import org.jetbrains.kotlin.ir.declarations.IrFunction
+import org.jetbrains.kotlin.ir.declarations.IrLocalDelegatedProperty
+import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
+import org.jetbrains.kotlin.ir.declarations.IrPackageFragment
+import org.jetbrains.kotlin.ir.declarations.IrProperty
+import org.jetbrains.kotlin.ir.declarations.IrScript
+import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
+import org.jetbrains.kotlin.ir.declarations.IrTypeAlias
+import org.jetbrains.kotlin.ir.declarations.IrTypeParameter
+import org.jetbrains.kotlin.ir.declarations.IrValueParameter
+import org.jetbrains.kotlin.ir.declarations.IrVariable
+import org.jetbrains.kotlin.ir.expressions.IrBlock
+import org.jetbrains.kotlin.ir.expressions.IrBlockBody
+import org.jetbrains.kotlin.ir.expressions.IrBody
+import org.jetbrains.kotlin.ir.expressions.IrBranch
+import org.jetbrains.kotlin.ir.expressions.IrBreak
+import org.jetbrains.kotlin.ir.expressions.IrBreakContinue
+import org.jetbrains.kotlin.ir.expressions.IrCall
+import org.jetbrains.kotlin.ir.expressions.IrCallableReference
+import org.jetbrains.kotlin.ir.expressions.IrCatch
+import org.jetbrains.kotlin.ir.expressions.IrClassReference
+import org.jetbrains.kotlin.ir.expressions.IrComposite
+import org.jetbrains.kotlin.ir.expressions.IrConst
+import org.jetbrains.kotlin.ir.expressions.IrConstantArray
+import org.jetbrains.kotlin.ir.expressions.IrConstantObject
+import org.jetbrains.kotlin.ir.expressions.IrConstantPrimitive
+import org.jetbrains.kotlin.ir.expressions.IrConstantValue
+import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrContainerExpression
+import org.jetbrains.kotlin.ir.expressions.IrContinue
+import org.jetbrains.kotlin.ir.expressions.IrDeclarationReference
+import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrDoWhileLoop
+import org.jetbrains.kotlin.ir.expressions.IrDynamicExpression
+import org.jetbrains.kotlin.ir.expressions.IrDynamicMemberExpression
+import org.jetbrains.kotlin.ir.expressions.IrDynamicOperatorExpression
+import org.jetbrains.kotlin.ir.expressions.IrElseBranch
+import org.jetbrains.kotlin.ir.expressions.IrEnumConstructorCall
+import org.jetbrains.kotlin.ir.expressions.IrErrorCallExpression
+import org.jetbrains.kotlin.ir.expressions.IrErrorExpression
+import org.jetbrains.kotlin.ir.expressions.IrExpression
+import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
+import org.jetbrains.kotlin.ir.expressions.IrFieldAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
+import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrGetClass
+import org.jetbrains.kotlin.ir.expressions.IrGetEnumValue
+import org.jetbrains.kotlin.ir.expressions.IrGetField
+import org.jetbrains.kotlin.ir.expressions.IrGetObjectValue
+import org.jetbrains.kotlin.ir.expressions.IrGetSingletonValue
+import org.jetbrains.kotlin.ir.expressions.IrGetValue
+import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
+import org.jetbrains.kotlin.ir.expressions.IrLocalDelegatedPropertyReference
+import org.jetbrains.kotlin.ir.expressions.IrLoop
+import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrPropertyReference
+import org.jetbrains.kotlin.ir.expressions.IrRawFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrReturn
+import org.jetbrains.kotlin.ir.expressions.IrSetField
+import org.jetbrains.kotlin.ir.expressions.IrSetValue
+import org.jetbrains.kotlin.ir.expressions.IrSpreadElement
+import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation
+import org.jetbrains.kotlin.ir.expressions.IrSuspendableExpression
+import org.jetbrains.kotlin.ir.expressions.IrSuspensionPoint
+import org.jetbrains.kotlin.ir.expressions.IrSyntheticBody
+import org.jetbrains.kotlin.ir.expressions.IrThrow
+import org.jetbrains.kotlin.ir.expressions.IrTry
+import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
+import org.jetbrains.kotlin.ir.expressions.IrValueAccessExpression
+import org.jetbrains.kotlin.ir.expressions.IrVararg
+import org.jetbrains.kotlin.ir.expressions.IrWhen
+import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
interface IrElementVisitorVoid : IrElementVisitor {
- fun visitElement(element: IrElement)
override fun visitElement(element: IrElement, data: Nothing?) = visitElement(element)
- fun visitModuleFragment(declaration: IrModuleFragment) = visitElement(declaration)
- override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?) = visitModuleFragment(declaration)
+ fun visitElement(element: IrElement) {
+ }
- fun visitPackageFragment(declaration: IrPackageFragment) = visitElement(declaration)
- override fun visitPackageFragment(declaration: IrPackageFragment, data: Nothing?) = visitPackageFragment(declaration)
+ override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) =
+ visitDeclaration(declaration)
- fun visitExternalPackageFragment(declaration: IrExternalPackageFragment) = visitPackageFragment(declaration)
- override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: Nothing?) =
- visitExternalPackageFragment(declaration)
+ fun visitDeclaration(declaration: IrDeclarationBase) = visitElement(declaration)
- fun visitFile(declaration: IrFile) = visitPackageFragment(declaration)
- override fun visitFile(declaration: IrFile, data: Nothing?) = visitFile(declaration)
+ override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) =
+ visitValueParameter(declaration)
- fun visitDeclaration(declaration: IrDeclarationBase) = visitElement(declaration)
- override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?) = visitDeclaration(declaration)
+ fun visitValueParameter(declaration: IrValueParameter) = visitDeclaration(declaration)
- fun visitClass(declaration: IrClass) = visitDeclaration(declaration)
override fun visitClass(declaration: IrClass, data: Nothing?) = visitClass(declaration)
- fun visitScript(declaration: IrScript) = visitDeclaration(declaration)
- override fun visitScript(declaration: IrScript, data: Nothing?) = visitScript(declaration)
+ fun visitClass(declaration: IrClass) = visitDeclaration(declaration)
+
+ override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer,
+ data: Nothing?) = visitAnonymousInitializer(declaration)
+
+ fun visitAnonymousInitializer(declaration: IrAnonymousInitializer) =
+ visitDeclaration(declaration)
+
+ override fun visitTypeParameter(declaration: IrTypeParameter, data: Nothing?) =
+ visitTypeParameter(declaration)
+
+ fun visitTypeParameter(declaration: IrTypeParameter) = visitDeclaration(declaration)
+
+ override fun visitFunction(declaration: IrFunction, data: Nothing?) =
+ visitFunction(declaration)
fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration)
- override fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration)
- fun visitSimpleFunction(declaration: IrSimpleFunction) = visitFunction(declaration)
- override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?) = visitSimpleFunction(declaration)
+ override fun visitConstructor(declaration: IrConstructor, data: Nothing?) =
+ visitConstructor(declaration)
fun visitConstructor(declaration: IrConstructor) = visitFunction(declaration)
- override fun visitConstructor(declaration: IrConstructor, data: Nothing?) = visitConstructor(declaration)
- fun visitProperty(declaration: IrProperty) = visitDeclaration(declaration)
- override fun visitProperty(declaration: IrProperty, data: Nothing?) = visitProperty(declaration)
+ override fun visitEnumEntry(declaration: IrEnumEntry, data: Nothing?) =
+ visitEnumEntry(declaration)
+
+ fun visitEnumEntry(declaration: IrEnumEntry) = visitDeclaration(declaration)
+
+ override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?) =
+ visitErrorDeclaration(declaration)
+
+ fun visitErrorDeclaration(declaration: IrErrorDeclaration) =
+ visitDeclaration(declaration)
- fun visitField(declaration: IrField) = visitDeclaration(declaration)
override fun visitField(declaration: IrField, data: Nothing?) = visitField(declaration)
- fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty) = visitDeclaration(declaration)
- override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: Nothing?) =
- visitLocalDelegatedProperty(declaration)
+ fun visitField(declaration: IrField) = visitDeclaration(declaration)
- fun visitVariable(declaration: IrVariable) = visitDeclaration(declaration)
- override fun visitVariable(declaration: IrVariable, data: Nothing?) = visitVariable(declaration)
+ override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty,
+ data: Nothing?) = visitLocalDelegatedProperty(declaration)
- fun visitEnumEntry(declaration: IrEnumEntry) = visitDeclaration(declaration)
- override fun visitEnumEntry(declaration: IrEnumEntry, data: Nothing?) = visitEnumEntry(declaration)
+ fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty) =
+ visitDeclaration(declaration)
- fun visitAnonymousInitializer(declaration: IrAnonymousInitializer) = visitDeclaration(declaration)
- override fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: Nothing?) = visitAnonymousInitializer(declaration)
+ override fun visitModuleFragment(declaration: IrModuleFragment, data: Nothing?) =
+ visitModuleFragment(declaration)
- fun visitTypeParameter(declaration: IrTypeParameter) = visitDeclaration(declaration)
- override fun visitTypeParameter(declaration: IrTypeParameter, data: Nothing?) = visitTypeParameter(declaration)
+ fun visitModuleFragment(declaration: IrModuleFragment) = visitElement(declaration)
- fun visitValueParameter(declaration: IrValueParameter) = visitDeclaration(declaration)
- override fun visitValueParameter(declaration: IrValueParameter, data: Nothing?) = visitValueParameter(declaration)
+ override fun visitProperty(declaration: IrProperty, data: Nothing?) =
+ visitProperty(declaration)
+
+ fun visitProperty(declaration: IrProperty) = visitDeclaration(declaration)
+
+ override fun visitScript(declaration: IrScript, data: Nothing?) =
+ visitScript(declaration)
+
+ fun visitScript(declaration: IrScript) = visitDeclaration(declaration)
+
+ override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?) =
+ visitSimpleFunction(declaration)
+
+ fun visitSimpleFunction(declaration: IrSimpleFunction) = visitFunction(declaration)
+
+ override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?) =
+ visitTypeAlias(declaration)
fun visitTypeAlias(declaration: IrTypeAlias) = visitDeclaration(declaration)
- override fun visitTypeAlias(declaration: IrTypeAlias, data: Nothing?) = visitTypeAlias(declaration)
- fun visitBody(body: IrBody) = visitElement(body)
+ override fun visitVariable(declaration: IrVariable, data: Nothing?) =
+ visitVariable(declaration)
+
+ fun visitVariable(declaration: IrVariable) = visitDeclaration(declaration)
+
+ override fun visitPackageFragment(declaration: IrPackageFragment, data: Nothing?) =
+ visitPackageFragment(declaration)
+
+ fun visitPackageFragment(declaration: IrPackageFragment) = visitElement(declaration)
+
+ override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment,
+ data: Nothing?) = visitExternalPackageFragment(declaration)
+
+ fun visitExternalPackageFragment(declaration: IrExternalPackageFragment) =
+ visitPackageFragment(declaration)
+
+ override fun visitFile(declaration: IrFile, data: Nothing?) = visitFile(declaration)
+
+ fun visitFile(declaration: IrFile) = visitPackageFragment(declaration)
+
+ override fun visitExpression(expression: IrExpression, data: Nothing?) =
+ visitExpression(expression)
+
+ fun visitExpression(expression: IrExpression) = visitElement(expression)
+
override fun visitBody(body: IrBody, data: Nothing?) = visitBody(body)
+ fun visitBody(body: IrBody) = visitElement(body)
+
+ override fun visitExpressionBody(body: IrExpressionBody, data: Nothing?) =
+ visitExpressionBody(body)
+
fun visitExpressionBody(body: IrExpressionBody) = visitBody(body)
- override fun visitExpressionBody(body: IrExpressionBody, data: Nothing?) = visitExpressionBody(body)
- fun visitBlockBody(body: IrBlockBody) = visitBody(body)
override fun visitBlockBody(body: IrBlockBody, data: Nothing?) = visitBlockBody(body)
+ fun visitBlockBody(body: IrBlockBody) = visitBody(body)
+
+ override fun visitDeclarationReference(expression: IrDeclarationReference,
+ data: Nothing?) = visitDeclarationReference(expression)
+
+ fun visitDeclarationReference(expression: IrDeclarationReference) =
+ visitExpression(expression)
+
+ override fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: Nothing?)
+ = visitMemberAccess(expression)
+
+ fun visitMemberAccess(expression: IrMemberAccessExpression<*>) =
+ visitDeclarationReference(expression)
+
+ override fun visitFunctionAccess(expression: IrFunctionAccessExpression,
+ data: Nothing?) = visitFunctionAccess(expression)
+
+ fun visitFunctionAccess(expression: IrFunctionAccessExpression) =
+ visitMemberAccess(expression)
+
+ override fun visitConstructorCall(expression: IrConstructorCall, data: Nothing?) =
+ visitConstructorCall(expression)
+
+ fun visitConstructorCall(expression: IrConstructorCall) = visitFunctionAccess(expression)
+
+ override fun visitSingletonReference(expression: IrGetSingletonValue, data: Nothing?) =
+ visitSingletonReference(expression)
+
+ fun visitSingletonReference(expression: IrGetSingletonValue) =
+ visitDeclarationReference(expression)
+
+ override fun visitGetObjectValue(expression: IrGetObjectValue, data: Nothing?) =
+ visitGetObjectValue(expression)
+
+ fun visitGetObjectValue(expression: IrGetObjectValue) =
+ visitSingletonReference(expression)
+
+ override fun visitGetEnumValue(expression: IrGetEnumValue, data: Nothing?) =
+ visitGetEnumValue(expression)
+
+ fun visitGetEnumValue(expression: IrGetEnumValue) = visitSingletonReference(expression)
+
+ override fun visitRawFunctionReference(expression: IrRawFunctionReference,
+ data: Nothing?) = visitRawFunctionReference(expression)
+
+ fun visitRawFunctionReference(expression: IrRawFunctionReference) =
+ visitDeclarationReference(expression)
+
+ override fun visitContainerExpression(expression: IrContainerExpression,
+ data: Nothing?) = visitContainerExpression(expression)
+
+ fun visitContainerExpression(expression: IrContainerExpression) =
+ visitExpression(expression)
+
+ override fun visitBlock(expression: IrBlock, data: Nothing?) = visitBlock(expression)
+
+ fun visitBlock(expression: IrBlock) = visitContainerExpression(expression)
+
+ override fun visitComposite(expression: IrComposite, data: Nothing?) =
+ visitComposite(expression)
+
+ fun visitComposite(expression: IrComposite) = visitContainerExpression(expression)
+
+ override fun visitSyntheticBody(body: IrSyntheticBody, data: Nothing?) =
+ visitSyntheticBody(body)
+
fun visitSyntheticBody(body: IrSyntheticBody) = visitBody(body)
- override fun visitSyntheticBody(body: IrSyntheticBody, data: Nothing?) = visitSyntheticBody(body)
- fun visitSuspendableExpression(expression: IrSuspendableExpression) = visitExpression(expression)
- override fun visitSuspendableExpression(expression: IrSuspendableExpression, data: Nothing?) = visitSuspendableExpression(expression)
+ override fun visitBreakContinue(jump: IrBreakContinue, data: Nothing?) =
+ visitBreakContinue(jump)
- fun visitSuspensionPoint(expression: IrSuspensionPoint) = visitExpression(expression)
- override fun visitSuspensionPoint(expression: IrSuspensionPoint, data: Nothing?) = visitSuspensionPoint(expression)
+ fun visitBreakContinue(jump: IrBreakContinue) = visitExpression(jump)
- fun visitExpression(expression: IrExpression) = visitElement(expression)
- override fun visitExpression(expression: IrExpression, data: Nothing?) = visitExpression(expression)
+ override fun visitBreak(jump: IrBreak, data: Nothing?) = visitBreak(jump)
+
+ fun visitBreak(jump: IrBreak) = visitBreakContinue(jump)
+
+ override fun visitContinue(jump: IrContinue, data: Nothing?) = visitContinue(jump)
+
+ fun visitContinue(jump: IrContinue) = visitBreakContinue(jump)
+
+ override fun visitCall(expression: IrCall, data: Nothing?) = visitCall(expression)
+
+ fun visitCall(expression: IrCall) = visitFunctionAccess(expression)
+
+ override fun visitCallableReference(expression: IrCallableReference<*>, data: Nothing?)
+ = visitCallableReference(expression)
+
+ fun visitCallableReference(expression: IrCallableReference<*>) =
+ visitMemberAccess(expression)
+
+ override fun visitFunctionReference(expression: IrFunctionReference, data: Nothing?) =
+ visitFunctionReference(expression)
+
+ fun visitFunctionReference(expression: IrFunctionReference) =
+ visitCallableReference(expression)
+
+ override fun visitPropertyReference(expression: IrPropertyReference, data: Nothing?) =
+ visitPropertyReference(expression)
+
+ fun visitPropertyReference(expression: IrPropertyReference) =
+ visitCallableReference(expression)
+
+ override
+ fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference,
+ data: Nothing?) = visitLocalDelegatedPropertyReference(expression)
+
+ fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference) =
+ visitCallableReference(expression)
+
+ override fun visitClassReference(expression: IrClassReference, data: Nothing?) =
+ visitClassReference(expression)
+
+ fun visitClassReference(expression: IrClassReference) =
+ visitDeclarationReference(expression)
+
+ override fun visitConst(expression: IrConst<*>, data: Nothing?) =
+ visitConst(expression)
fun visitConst(expression: IrConst<*>) = visitExpression(expression)
- override fun visitConst(expression: IrConst<*>, data: Nothing?) = visitConst(expression)
+
+ override fun visitConstantValue(expression: IrConstantValue, data: Nothing?) =
+ visitConstantValue(expression)
fun visitConstantValue(expression: IrConstantValue) = visitExpression(expression)
- override fun visitConstantValue(expression: IrConstantValue, data: Nothing?) = visitConstantValue(expression)
+
+ override fun visitConstantPrimitive(expression: IrConstantPrimitive, data: Nothing?) =
+ visitConstantPrimitive(expression)
+
+ fun visitConstantPrimitive(expression: IrConstantPrimitive) =
+ visitConstantValue(expression)
+
+ override fun visitConstantObject(expression: IrConstantObject, data: Nothing?) =
+ visitConstantObject(expression)
fun visitConstantObject(expression: IrConstantObject) = visitConstantValue(expression)
- override fun visitConstantObject(expression: IrConstantObject, data: Nothing?) = visitConstantObject(expression)
- fun visitConstantPrimitive(expression: IrConstantPrimitive) = visitConstantValue(expression)
- override fun visitConstantPrimitive(expression: IrConstantPrimitive, data: Nothing?) = visitConstantPrimitive(expression)
+ override fun visitConstantArray(expression: IrConstantArray, data: Nothing?) =
+ visitConstantArray(expression)
fun visitConstantArray(expression: IrConstantArray) = visitConstantValue(expression)
- override fun visitConstantArray(expression: IrConstantArray, data: Nothing?) = visitConstantArray(expression)
- fun visitVararg(expression: IrVararg) = visitExpression(expression)
- override fun visitVararg(expression: IrVararg, data: Nothing?) = visitVararg(expression)
+ override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall,
+ data: Nothing?) = visitDelegatingConstructorCall(expression)
- fun visitSpreadElement(spread: IrSpreadElement) = visitElement(spread)
- override fun visitSpreadElement(spread: IrSpreadElement, data: Nothing?) = visitSpreadElement(spread)
+ fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) =
+ visitFunctionAccess(expression)
- fun visitContainerExpression(expression: IrContainerExpression) = visitExpression(expression)
- override fun visitContainerExpression(expression: IrContainerExpression, data: Nothing?) = visitContainerExpression(expression)
+ override fun visitDynamicExpression(expression: IrDynamicExpression, data: Nothing?) =
+ visitDynamicExpression(expression)
- fun visitComposite(expression: IrComposite) = visitContainerExpression(expression)
- override fun visitComposite(expression: IrComposite, data: Nothing?) = visitComposite(expression)
+ fun visitDynamicExpression(expression: IrDynamicExpression) = visitExpression(expression)
- fun visitBlock(expression: IrBlock) = visitContainerExpression(expression)
- override fun visitBlock(expression: IrBlock, data: Nothing?) = visitBlock(expression)
+ override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression,
+ data: Nothing?) = visitDynamicOperatorExpression(expression)
- fun visitStringConcatenation(expression: IrStringConcatenation) = visitExpression(expression)
- override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?) = visitStringConcatenation(expression)
+ fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression) =
+ visitDynamicExpression(expression)
- fun visitDeclarationReference(expression: IrDeclarationReference) = visitExpression(expression)
- override fun visitDeclarationReference(expression: IrDeclarationReference, data: Nothing?) = visitDeclarationReference(expression)
+ override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression,
+ data: Nothing?) = visitDynamicMemberExpression(expression)
- fun visitSingletonReference(expression: IrGetSingletonValue) = visitDeclarationReference(expression)
- override fun visitSingletonReference(expression: IrGetSingletonValue, data: Nothing?) = visitSingletonReference(expression)
+ fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression) =
+ visitDynamicExpression(expression)
- fun visitGetObjectValue(expression: IrGetObjectValue) = visitSingletonReference(expression)
- override fun visitGetObjectValue(expression: IrGetObjectValue, data: Nothing?) = visitGetObjectValue(expression)
+ override fun visitEnumConstructorCall(expression: IrEnumConstructorCall,
+ data: Nothing?) = visitEnumConstructorCall(expression)
- fun visitGetEnumValue(expression: IrGetEnumValue) = visitSingletonReference(expression)
- override fun visitGetEnumValue(expression: IrGetEnumValue, data: Nothing?) = visitGetEnumValue(expression)
+ fun visitEnumConstructorCall(expression: IrEnumConstructorCall) =
+ visitFunctionAccess(expression)
- fun visitValueAccess(expression: IrValueAccessExpression) = visitDeclarationReference(expression)
- override fun visitValueAccess(expression: IrValueAccessExpression, data: Nothing?) = visitValueAccess(expression)
+ override fun visitErrorExpression(expression: IrErrorExpression, data: Nothing?) =
+ visitErrorExpression(expression)
- fun visitGetValue(expression: IrGetValue) = visitValueAccess(expression)
- override fun visitGetValue(expression: IrGetValue, data: Nothing?) = visitGetValue(expression)
+ fun visitErrorExpression(expression: IrErrorExpression) = visitExpression(expression)
- fun visitSetValue(expression: IrSetValue) = visitValueAccess(expression)
- override fun visitSetValue(expression: IrSetValue, data: Nothing?) = visitSetValue(expression)
+ override fun visitErrorCallExpression(expression: IrErrorCallExpression,
+ data: Nothing?) = visitErrorCallExpression(expression)
+
+ fun visitErrorCallExpression(expression: IrErrorCallExpression) =
+ visitErrorExpression(expression)
+
+ override fun visitFieldAccess(expression: IrFieldAccessExpression, data: Nothing?) =
+ visitFieldAccess(expression)
+
+ fun visitFieldAccess(expression: IrFieldAccessExpression) =
+ visitDeclarationReference(expression)
- fun visitFieldAccess(expression: IrFieldAccessExpression) = visitDeclarationReference(expression)
- override fun visitFieldAccess(expression: IrFieldAccessExpression, data: Nothing?) = visitFieldAccess(expression)
+ override fun visitGetField(expression: IrGetField, data: Nothing?) =
+ visitGetField(expression)
fun visitGetField(expression: IrGetField) = visitFieldAccess(expression)
- override fun visitGetField(expression: IrGetField, data: Nothing?) = visitGetField(expression)
+
+ override fun visitSetField(expression: IrSetField, data: Nothing?) =
+ visitSetField(expression)
fun visitSetField(expression: IrSetField) = visitFieldAccess(expression)
- override fun visitSetField(expression: IrSetField, data: Nothing?) = visitSetField(expression)
- fun visitMemberAccess(expression: IrMemberAccessExpression<*>) = visitDeclarationReference(expression)
- override fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: Nothing?) = visitMemberAccess(expression)
+ override fun visitFunctionExpression(expression: IrFunctionExpression, data: Nothing?)
+ = visitFunctionExpression(expression)
- fun visitFunctionAccess(expression: IrFunctionAccessExpression) = visitMemberAccess(expression)
- override fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: Nothing?) = visitFunctionAccess(expression)
+ fun visitFunctionExpression(expression: IrFunctionExpression) =
+ visitExpression(expression)
- fun visitCall(expression: IrCall) = visitFunctionAccess(expression)
- override fun visitCall(expression: IrCall, data: Nothing?) = visitCall(expression)
+ override fun visitGetClass(expression: IrGetClass, data: Nothing?) =
+ visitGetClass(expression)
- fun visitConstructorCall(expression: IrConstructorCall) = visitFunctionAccess(expression)
- override fun visitConstructorCall(expression: IrConstructorCall, data: Nothing?) = visitConstructorCall(expression)
+ fun visitGetClass(expression: IrGetClass) = visitExpression(expression)
- fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall) = visitFunctionAccess(expression)
- override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: Nothing?) =
- visitDelegatingConstructorCall(expression)
+ override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall,
+ data: Nothing?) = visitInstanceInitializerCall(expression)
- fun visitEnumConstructorCall(expression: IrEnumConstructorCall) = visitFunctionAccess(expression)
- override fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: Nothing?) = visitEnumConstructorCall(expression)
+ fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall) =
+ visitExpression(expression)
- fun visitGetClass(expression: IrGetClass) = visitExpression(expression)
- override fun visitGetClass(expression: IrGetClass, data: Nothing?) = visitGetClass(expression)
+ override fun visitLoop(loop: IrLoop, data: Nothing?) = visitLoop(loop)
- fun visitCallableReference(expression: IrCallableReference<*>) = visitMemberAccess(expression)
- override fun visitCallableReference(expression: IrCallableReference<*>, data: Nothing?) = visitCallableReference(expression)
+ fun visitLoop(loop: IrLoop) = visitExpression(loop)
- fun visitFunctionReference(expression: IrFunctionReference) = visitCallableReference(expression)
- override fun visitFunctionReference(expression: IrFunctionReference, data: Nothing?) = visitFunctionReference(expression)
+ override fun visitWhileLoop(loop: IrWhileLoop, data: Nothing?) = visitWhileLoop(loop)
- fun visitPropertyReference(expression: IrPropertyReference) = visitCallableReference(expression)
- override fun visitPropertyReference(expression: IrPropertyReference, data: Nothing?) = visitPropertyReference(expression)
+ fun visitWhileLoop(loop: IrWhileLoop) = visitLoop(loop)
- fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference) = visitCallableReference(expression)
- override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference, data: Nothing?) =
- visitLocalDelegatedPropertyReference(expression)
+ override fun visitDoWhileLoop(loop: IrDoWhileLoop, data: Nothing?) =
+ visitDoWhileLoop(loop)
- fun visitRawFunctionReference(expression: IrRawFunctionReference) = visitDeclarationReference(expression)
- override fun visitRawFunctionReference(expression: IrRawFunctionReference, data: Nothing?) =
- visitRawFunctionReference(expression)
+ fun visitDoWhileLoop(loop: IrDoWhileLoop) = visitLoop(loop)
- fun visitFunctionExpression(expression: IrFunctionExpression) = visitExpression(expression)
- override fun visitFunctionExpression(expression: IrFunctionExpression, data: Nothing?) = visitFunctionExpression(expression)
+ override fun visitReturn(expression: IrReturn, data: Nothing?) =
+ visitReturn(expression)
- fun visitClassReference(expression: IrClassReference) = visitDeclarationReference(expression)
- override fun visitClassReference(expression: IrClassReference, data: Nothing?) = visitClassReference(expression)
+ fun visitReturn(expression: IrReturn) = visitExpression(expression)
- fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall) = visitExpression(expression)
- override fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: Nothing?) =
- visitInstanceInitializerCall(expression)
+ override fun visitStringConcatenation(expression: IrStringConcatenation,
+ data: Nothing?) = visitStringConcatenation(expression)
- fun visitTypeOperator(expression: IrTypeOperatorCall) = visitExpression(expression)
- override fun visitTypeOperator(expression: IrTypeOperatorCall, data: Nothing?) = visitTypeOperator(expression)
+ fun visitStringConcatenation(expression: IrStringConcatenation) =
+ visitExpression(expression)
- fun visitWhen(expression: IrWhen) = visitExpression(expression)
- override fun visitWhen(expression: IrWhen, data: Nothing?) = visitWhen(expression)
+ override fun visitSuspensionPoint(expression: IrSuspensionPoint, data: Nothing?) =
+ visitSuspensionPoint(expression)
- fun visitBranch(branch: IrBranch) = visitElement(branch)
- override fun visitBranch(branch: IrBranch, data: Nothing?) = visitBranch(branch)
+ fun visitSuspensionPoint(expression: IrSuspensionPoint) = visitExpression(expression)
- fun visitElseBranch(branch: IrElseBranch) = visitBranch(branch)
- override fun visitElseBranch(branch: IrElseBranch, data: Nothing?) = visitElseBranch(branch)
+ override fun visitSuspendableExpression(expression: IrSuspendableExpression,
+ data: Nothing?) = visitSuspendableExpression(expression)
- fun visitLoop(loop: IrLoop) = visitExpression(loop)
- override fun visitLoop(loop: IrLoop, data: Nothing?) = visitLoop(loop)
+ fun visitSuspendableExpression(expression: IrSuspendableExpression) =
+ visitExpression(expression)
- fun visitWhileLoop(loop: IrWhileLoop) = visitLoop(loop)
- override fun visitWhileLoop(loop: IrWhileLoop, data: Nothing?) = visitWhileLoop(loop)
+ override fun visitThrow(expression: IrThrow, data: Nothing?) = visitThrow(expression)
- fun visitDoWhileLoop(loop: IrDoWhileLoop) = visitLoop(loop)
- override fun visitDoWhileLoop(loop: IrDoWhileLoop, data: Nothing?) = visitDoWhileLoop(loop)
+ fun visitThrow(expression: IrThrow) = visitExpression(expression)
- fun visitTry(aTry: IrTry) = visitExpression(aTry)
override fun visitTry(aTry: IrTry, data: Nothing?) = visitTry(aTry)
- fun visitCatch(aCatch: IrCatch) = visitElement(aCatch)
+ fun visitTry(aTry: IrTry) = visitExpression(aTry)
+
override fun visitCatch(aCatch: IrCatch, data: Nothing?) = visitCatch(aCatch)
- fun visitBreakContinue(jump: IrBreakContinue) = visitExpression(jump)
- override fun visitBreakContinue(jump: IrBreakContinue, data: Nothing?) = visitBreakContinue(jump)
+ fun visitCatch(aCatch: IrCatch) = visitElement(aCatch)
- fun visitBreak(jump: IrBreak) = visitBreakContinue(jump)
- override fun visitBreak(jump: IrBreak, data: Nothing?) = visitBreak(jump)
+ override fun visitTypeOperator(expression: IrTypeOperatorCall, data: Nothing?) =
+ visitTypeOperator(expression)
- fun visitContinue(jump: IrContinue) = visitBreakContinue(jump)
- override fun visitContinue(jump: IrContinue, data: Nothing?) = visitContinue(jump)
+ fun visitTypeOperator(expression: IrTypeOperatorCall) = visitExpression(expression)
- fun visitReturn(expression: IrReturn) = visitExpression(expression)
- override fun visitReturn(expression: IrReturn, data: Nothing?) = visitReturn(expression)
+ override fun visitValueAccess(expression: IrValueAccessExpression, data: Nothing?) =
+ visitValueAccess(expression)
- fun visitThrow(expression: IrThrow) = visitExpression(expression)
- override fun visitThrow(expression: IrThrow, data: Nothing?) = visitThrow(expression)
+ fun visitValueAccess(expression: IrValueAccessExpression) =
+ visitDeclarationReference(expression)
- fun visitDynamicExpression(expression: IrDynamicExpression) = visitExpression(expression)
- override fun visitDynamicExpression(expression: IrDynamicExpression, data: Nothing?) = visitDynamicExpression(expression)
+ override fun visitGetValue(expression: IrGetValue, data: Nothing?) =
+ visitGetValue(expression)
+
+ fun visitGetValue(expression: IrGetValue) = visitValueAccess(expression)
- fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression) = visitDynamicExpression(expression)
- override fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression, data: Nothing?) =
- visitDynamicOperatorExpression(expression)
+ override fun visitSetValue(expression: IrSetValue, data: Nothing?) =
+ visitSetValue(expression)
- fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression) = visitDynamicExpression(expression)
- override fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression, data: Nothing?) =
- visitDynamicMemberExpression(expression)
+ fun visitSetValue(expression: IrSetValue) = visitValueAccess(expression)
- fun visitErrorDeclaration(declaration: IrErrorDeclaration) = visitDeclaration(declaration)
- override fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: Nothing?) = visitErrorDeclaration(declaration)
+ override fun visitVararg(expression: IrVararg, data: Nothing?) =
+ visitVararg(expression)
- fun visitErrorExpression(expression: IrErrorExpression) = visitExpression(expression)
- override fun visitErrorExpression(expression: IrErrorExpression, data: Nothing?) = visitErrorExpression(expression)
+ fun visitVararg(expression: IrVararg) = visitExpression(expression)
+
+ override fun visitSpreadElement(spread: IrSpreadElement, data: Nothing?) =
+ visitSpreadElement(spread)
- fun visitErrorCallExpression(expression: IrErrorCallExpression) = visitErrorExpression(expression)
- override fun visitErrorCallExpression(expression: IrErrorCallExpression, data: Nothing?) = visitErrorCallExpression(expression)
+ fun visitSpreadElement(spread: IrSpreadElement) = visitElement(spread)
+
+ override fun visitWhen(expression: IrWhen, data: Nothing?) = visitWhen(expression)
+
+ fun visitWhen(expression: IrWhen) = visitExpression(expression)
+
+ override fun visitBranch(branch: IrBranch, data: Nothing?) = visitBranch(branch)
+
+ fun visitBranch(branch: IrBranch) = visitElement(branch)
+
+ override fun visitElseBranch(branch: IrElseBranch, data: Nothing?) =
+ visitElseBranch(branch)
+
+ fun visitElseBranch(branch: IrElseBranch) = visitBranch(branch)
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt
index 22ad20008d756..ce40d959f2e47 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrScriptImpl.kt
@@ -48,7 +48,8 @@ class IrScriptImpl(
override lateinit var baseClass: IrType
override lateinit var explicitCallParameters: List
override lateinit var implicitReceiversParameters: List
- override lateinit var providedProperties: List>
+ override lateinit var providedProperties: List
+ override lateinit var providedPropertiesParameters: List
override var resultProperty: IrPropertySymbol? = null
override var earlierScriptsParameter: IrValueParameter? = null
override var earlierScripts: List? = null
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt
index d4d343d11bbc9..c8f5f4f17bfb2 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrMemberAccessExpression.kt
@@ -20,6 +20,10 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.types.KotlinType
+// todo: autogenerate
+/**
+ * A non-leaf IR tree element.
+ */
abstract class IrMemberAccessExpression : IrDeclarationReference() {
var dispatchReceiver: IrExpression? = null
var extensionReceiver: IrExpression? = null
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDoWhileLoopImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDoWhileLoopImpl.kt
index e192ec75fbac9..0e661f5fca685 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDoWhileLoopImpl.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrDoWhileLoopImpl.kt
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.ir.expressions.impl
import org.jetbrains.kotlin.ir.expressions.IrDoWhileLoop
+import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
import org.jetbrains.kotlin.ir.types.IrType
@@ -25,4 +26,6 @@ class IrDoWhileLoopImpl(
override val endOffset: Int,
override var type: IrType,
override val origin: IrStatementOrigin?,
-) : IrDoWhileLoop()
+) : IrDoWhileLoop() {
+ override lateinit var condition: IrExpression
+}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrWhileLoopImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrWhileLoopImpl.kt
index 4ff5058809439..70338c6bf2821 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrWhileLoopImpl.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrWhileLoopImpl.kt
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.ir.expressions.impl
+import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
import org.jetbrains.kotlin.ir.types.IrType
@@ -25,4 +26,6 @@ class IrWhileLoopImpl(
override val endOffset: Int,
override var type: IrType,
override val origin: IrStatementOrigin?,
-) : IrWhileLoop()
+) : IrWhileLoop() {
+ override lateinit var condition: IrExpression
+}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt
index baaa67bfa1182..17086b2dcddda 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt
@@ -134,7 +134,7 @@ open class DeepCopyIrTreeWithSymbols(
scriptCopy.earlierScriptsParameter = declaration.earlierScriptsParameter
scriptCopy.explicitCallParameters = declaration.explicitCallParameters.map { it.transform() }
scriptCopy.implicitReceiversParameters = declaration.implicitReceiversParameters.map { it.transform() }
- scriptCopy.providedProperties = declaration.providedProperties.map { it.first.transform() to it.second }
+ scriptCopy.providedPropertiesParameters = declaration.providedPropertiesParameters.map { it.transform() }
}
}
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/dumpKotlinLike.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/dumpKotlinLike.kt
index 75f03661bc414..d492ea95db6cf 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/dumpKotlinLike.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/dumpKotlinLike.kt
@@ -163,16 +163,6 @@ private class KotlinLikeDumper(val p: Printer, val options: KotlinLikeDumpOption
if (options.printRegionsPerFile) p.println("//endregion")
}
- override fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: IrDeclaration?) {
- // TODO support
- super.visitExternalPackageFragment(declaration, data)
- }
-
- override fun visitScript(declaration: IrScript, data: IrDeclaration?) {
- // TODO support
- super.visitScript(declaration, data)
- }
-
override fun visitClass(declaration: IrClass, data: IrDeclaration?) {
// TODO omit super class for enums, annotations?
// TODO omit Companion name for companion objects?
@@ -1461,18 +1451,6 @@ private class KotlinLikeDumper(val p: Printer, val options: KotlinLikeDumpOption
}
}
- override fun visitSuspendableExpression(expression: IrSuspendableExpression, data: IrDeclaration?) {
- // TODO support
- // TODO no test
- super.visitSuspendableExpression(expression, data)
- }
-
- override fun visitSuspensionPoint(expression: IrSuspensionPoint, data: IrDeclaration?) {
- // TODO support
- // TODO no test
- super.visitSuspensionPoint(expression, data)
- }
-
private fun p(condition: Boolean, s: String) {
if (condition) p.printWithNoIndent("$s ")
}
diff --git a/compiler/ir/ir.tree/tree-generator/build.gradle.kts b/compiler/ir/ir.tree/tree-generator/build.gradle.kts
new file mode 100644
index 0000000000000..41446a855e0b8
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/build.gradle.kts
@@ -0,0 +1,42 @@
+import tasks.WriteCopyrightToFile
+
+plugins {
+ kotlin("jvm")
+ id("jps-compatible")
+ application
+}
+
+val runtimeOnly by configurations
+val compileOnly by configurations
+runtimeOnly.extendsFrom(compileOnly)
+
+dependencies {
+ implementation(project(":generators"))
+ implementation(project(":core:compiler.common"))
+ implementation("com.squareup:kotlinpoet:1.11.0")
+
+ compileOnly(intellijCore())
+ compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j"))
+
+ runtimeOnly(commonDependency("org.jetbrains.intellij.deps:jdom"))
+}
+
+val writeCopyright by task {
+ outputFile.set(file("$buildDir/copyright/notice.txt"))
+ commented.set(true)
+}
+
+application {
+ mainClassName = "org.jetbrains.kotlin.ir.generator.MainKt"
+}
+
+val processResources by tasks
+processResources.dependsOn(writeCopyright)
+
+sourceSets {
+ "main" {
+ projectDefault()
+ resources.srcDir("$buildDir/copyright")
+ }
+ "test" {}
+}
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/CommonTypes.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/CommonTypes.kt
new file mode 100644
index 0000000000000..ee9481c7fc456
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/CommonTypes.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2010-2021 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.ir.generator
+
+import org.jetbrains.kotlin.ir.generator.Packages.declarations
+import org.jetbrains.kotlin.ir.generator.Packages.exprs
+import org.jetbrains.kotlin.ir.generator.Packages.symbols
+import org.jetbrains.kotlin.ir.generator.Packages.tree
+import org.jetbrains.kotlin.ir.generator.Packages.types
+import org.jetbrains.kotlin.ir.generator.Packages.visitors
+import org.jetbrains.kotlin.ir.generator.util.TypeKind
+import org.jetbrains.kotlin.ir.generator.util.type
+
+object Packages {
+ const val tree = "org.jetbrains.kotlin.ir"
+ const val exprs = "org.jetbrains.kotlin.ir.expressions"
+ const val symbols = "org.jetbrains.kotlin.ir.symbols"
+ const val declarations = "org.jetbrains.kotlin.ir.declarations"
+ const val types = "org.jetbrains.kotlin.ir.types"
+ const val visitors = "org.jetbrains.kotlin.ir.visitors"
+ const val descriptors = "org.jetbrains.kotlin.descriptors"
+}
+
+val elementBaseType = type(tree, "IrElementBase", TypeKind.Class)
+val statementOriginType = type(exprs, "IrStatementOrigin")
+val elementVisitorType = type(visitors, "IrElementVisitor")
+val elementTransformerType = type(visitors, "IrElementTransformer")
+val mutableAnnotationContainerType = type(declarations, "IrMutableAnnotationContainer")
+val irTypeType = type(types, "IrType")
+
+val symbolType = type(symbols, "IrSymbol")
+val packageFragmentSymbolType = type(symbols, "IrPackageFragmentSymbol")
+val fileSymbolType = type(symbols, "IrFileSymbol")
+val externalPackageFragmentSymbolType = type(symbols, "IrExternalPackageFragmentSymbol")
+val anonymousInitializerSymbolType = type(symbols, "IrAnonymousInitializerSymbol")
+val enumEntrySymbolType = type(symbols, "IrEnumEntrySymbol")
+val fieldSymbolType = type(symbols, "IrFieldSymbol")
+val classifierSymbolType = type(symbols, "IrClassifierSymbol")
+val classSymbolType = type(symbols, "IrClassSymbol")
+val scriptSymbolType = type(symbols, "IrScriptSymbol")
+val typeParameterSymbolType = type(symbols, "IrTypeParameterSymbol")
+val valueSymbolType = type(symbols, "IrValueSymbol")
+val valueParameterSymbolType = type(symbols, "IrValueParameterSymbol")
+val variableSymbolType = type(symbols, "IrVariableSymbol")
+val returnTargetSymbolType = type(symbols, "IrReturnTargetSymbol")
+val functionSymbolType = type(symbols, "IrFunctionSymbol")
+val constructorSymbolType = type(symbols, "IrConstructorSymbol")
+val simpleFunctionSymbolType = type(symbols, "IrSimpleFunctionSymbol")
+val returnableBlockSymbolType = type(symbols, "IrReturnableBlockSymbol")
+val propertySymbolType = type(symbols, "IrPropertySymbol")
+val localDelegatedPropertySymbolType = type(symbols, "IrLocalDelegatedPropertySymbol")
+val typeAliasSymbolType = type(symbols, "IrTypeAliasSymbol")
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt
new file mode 100644
index 0000000000000..bc95a4d73b44a
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/IrTree.kt
@@ -0,0 +1,1055 @@
+/*
+ * Copyright 2010-2021 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.ir.generator
+
+import com.squareup.kotlinpoet.FunSpec
+import com.squareup.kotlinpoet.KModifier
+import com.squareup.kotlinpoet.MemberName
+import org.jetbrains.kotlin.descriptors.ClassKind
+import org.jetbrains.kotlin.descriptors.Modality
+import org.jetbrains.kotlin.descriptors.SourceElement
+import org.jetbrains.kotlin.descriptors.ValueClassRepresentation
+import org.jetbrains.kotlin.ir.generator.config.AbstractTreeBuilder
+import org.jetbrains.kotlin.ir.generator.config.ElementConfig
+import org.jetbrains.kotlin.ir.generator.config.ElementConfig.Category.*
+import org.jetbrains.kotlin.ir.generator.config.ListFieldConfig.Mutability.List
+import org.jetbrains.kotlin.ir.generator.config.ListFieldConfig.Mutability.Var
+import org.jetbrains.kotlin.ir.generator.config.SimpleFieldConfig
+import org.jetbrains.kotlin.ir.generator.print.toPoet
+import org.jetbrains.kotlin.ir.generator.util.*
+import org.jetbrains.kotlin.name.FqName
+import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
+import org.jetbrains.kotlin.types.Variance
+
+// Note the style of the DSL to describe IR elements, which is these things in the following order:
+// 1) config (see properties of ElementConfig)
+// 2) parents
+// 3) fields
+object IrTree : AbstractTreeBuilder() {
+ private fun symbol(type: TypeRef) = field("symbol", type)
+ private fun descriptor(typeName: String) =
+ field("descriptor", ClassRef(TypeKind.Interface, "org.jetbrains.kotlin.descriptors", typeName))
+
+ private val factory: SimpleFieldConfig = field("factory", type(Packages.declarations, "IrFactory"))
+
+ override val rootElement: ElementConfig by element(Other, name = "element") {
+ accept = true
+ transform = true
+ transformByChildren = true
+
+ +field("startOffset", int)
+ +field("endOffset", int)
+ }
+ val statement: ElementConfig by element(Other)
+
+ val declaration: ElementConfig by element(Declaration) {
+ parent(statement)
+ parent(symbolOwner)
+ parent(mutableAnnotationContainerType)
+
+ +descriptor("DeclarationDescriptor")
+ +field("origin", type(Packages.declarations, "IrDeclarationOrigin"), mutable = true)
+ +field("parent", declarationParent, mutable = true)
+ +factory
+ }
+ val declarationBase: ElementConfig by element(Declaration) {
+ typeKind = TypeKind.Class
+ transformByChildren = true
+ transformerReturnType = statement
+ visitorParent = rootElement
+ visitorName = "declaration"
+
+ parent(declaration)
+ }
+ val declarationParent: ElementConfig by element(Declaration)
+ val declarationWithVisibility: ElementConfig by element(Declaration) {
+ parent(declaration)
+
+ +field("visibility", type(Packages.descriptors, "DescriptorVisibility"), mutable = true)
+ }
+ val declarationWithName: ElementConfig by element(Declaration) {
+ parent(declaration)
+
+ +field("name", type(), mutable = true)
+ }
+ val possiblyExternalDeclaration: ElementConfig by element(Declaration) {
+ parent(declarationWithName)
+
+ +field("isExternal", boolean)
+ }
+ val symbolOwner: ElementConfig by element(Declaration) {
+ +symbol(symbolType)
+ }
+ val metadataSourceOwner: ElementConfig by element(Declaration) {
+ +field("metadata", type(Packages.declarations, "MetadataSource"), nullable = true, mutable = true)
+ }
+ val overridableMember: ElementConfig by element(Declaration) {
+ parent(declaration)
+ parent(declarationWithVisibility)
+ parent(declarationWithName)
+ parent(symbolOwner)
+
+ +field("modality", type())
+ }
+ val overridableDeclaration: ElementConfig by element(Declaration) {
+ val s = +param("S", symbolType)
+
+ parent(overridableMember)
+
+ +field("symbol", s)
+ +field("isFakeOverride", boolean)
+ +listField("overriddenSymbols", s, mutability = Var)
+ }
+ val memberWithContainerSource: ElementConfig by element(Declaration) {
+ parent(declarationWithName)
+
+ +field("containerSource", type(), nullable = true)
+ }
+ val valueDeclaration: ElementConfig by element(Declaration) {
+ parent(declarationWithName)
+ parent(symbolOwner)
+
+ +descriptor("ValueDescriptor")
+ +symbol(valueSymbolType)
+ +field("type", irTypeType, mutable = true)
+ +field("isAssignable", boolean)
+ }
+ val valueParameter: ElementConfig by element(Declaration) {
+ transform = true
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(valueDeclaration)
+
+ +descriptor("ParameterDescriptor")
+ +symbol(valueParameterSymbolType)
+ +field("index", int)
+ +field("varargElementType", irTypeType, nullable = true, mutable = true)
+ +field("isCrossinline", boolean)
+ +field("isNoinline", boolean)
+ // if true parameter is not included into IdSignature.
+ // Skipping hidden params makes IrFunction be look similar to FE.
+ // NOTE: it is introduced to fix KT-40980 because more clear solution was not possible to implement.
+ // Once we are able to load any top-level declaration from klib this hack should be deprecated and removed.
+ +field("isHidden", boolean)
+ +field("defaultValue", expressionBody, nullable = true, mutable = true, isChild = true)
+ }
+ val `class`: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(possiblyExternalDeclaration)
+ parent(declarationWithVisibility)
+ parent(typeParametersContainer)
+ parent(declarationContainer)
+ parent(attributeContainer)
+ parent(metadataSourceOwner)
+
+ +descriptor("ClassDescriptor")
+ +symbol(classSymbolType)
+ +field("kind", type())
+ +field("modality", type(), mutable = true)
+ +field("isCompanion", boolean)
+ +field("isInner", boolean)
+ +field("isData", boolean)
+ +field("isValue", boolean)
+ +field("isExpect", boolean)
+ +field("isFun", boolean)
+ +field("source", type())
+ +listField("superTypes", irTypeType, mutability = Var)
+ +field("thisReceiver", valueParameter, nullable = true, mutable = true, isChild = true)
+ +field(
+ "valueClassRepresentation",
+ type>().withArgs(type(Packages.types, "IrSimpleType")),
+ nullable = true,
+ mutable = true
+ )
+ +listField("sealedSubclasses", classSymbolType, mutability = Var)
+ }
+ val attributeContainer: ElementConfig by element(Declaration) {
+ +field("attributeOwnerId", attributeContainer, mutable = true)
+ }
+ val anonymousInitializer: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+
+ +descriptor("ClassDescriptor") // TODO special descriptor for anonymous initializer blocks
+ +symbol(anonymousInitializerSymbolType)
+ +field("isStatic", boolean)
+ +field("body", blockBody, mutable = true, isChild = true)
+ }
+ val declarationContainer: ElementConfig by element(Declaration) {
+ ownsChildren = false
+
+ parent(declarationParent)
+
+ +listField("declarations", declaration, mutability = List, isChild = true)
+ }
+ val typeParametersContainer: ElementConfig by element(Declaration) {
+ ownsChildren = false
+
+ parent(declaration)
+ parent(declarationParent)
+
+ +listField("typeParameters", typeParameter, mutability = Var, isChild = true)
+ }
+ val typeParameter: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+ transform = true
+
+ parent(declarationBase)
+ parent(declarationWithName)
+
+ +descriptor("TypeParameterDescriptor")
+ +symbol(typeParameterSymbolType)
+ +field("variance", type())
+ +field("index", int)
+ +field("isReified", boolean)
+ +listField("superTypes", irTypeType, mutability = Var)
+ }
+ val returnTarget: ElementConfig by element(Declaration) {
+ parent(symbolOwner)
+
+ +descriptor("FunctionDescriptor")
+ +symbol(returnTargetSymbolType)
+ }
+ val function: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(possiblyExternalDeclaration)
+ parent(declarationWithVisibility)
+ parent(typeParametersContainer)
+ parent(symbolOwner)
+ parent(declarationParent)
+ parent(returnTarget)
+ parent(memberWithContainerSource)
+ parent(metadataSourceOwner)
+
+ +descriptor("FunctionDescriptor")
+ +symbol(functionSymbolType)
+ // NB: there's an inline constructor for Array and each primitive array class.
+ +field("isInline", boolean)
+ +field("isExpect", boolean)
+ +field("returnType", irTypeType, mutable = true)
+ +field("dispatchReceiverParameter", valueParameter, mutable = true, nullable = true, isChild = true)
+ +field("extensionReceiverParameter", valueParameter, mutable = true, nullable = true, isChild = true)
+ +listField("valueParameters", valueParameter, mutability = Var, isChild = true)
+ // The first `contextReceiverParametersCount` value parameters are context receivers.
+ +field("contextReceiverParametersCount", int, mutable = true)
+ +field("body", body, mutable = true, nullable = true, isChild = true)
+ }
+ val constructor: ElementConfig by element(Declaration) {
+ visitorParent = function
+
+ parent(function)
+
+ +descriptor("ClassConstructorDescriptor")
+ +symbol(constructorSymbolType)
+ +field("isPrimary", boolean)
+ }
+ val enumEntry: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(declarationWithName)
+
+ +descriptor("ClassDescriptor")
+ +symbol(enumEntrySymbolType)
+ +field("initializerExpression", expressionBody, mutable = true, nullable = true, isChild = true)
+ +field("correspondingClass", `class`, mutable = true, nullable = true, isChild = true)
+ }
+ val errorDeclaration: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+
+ +field("symbol", symbolType) {
+ baseGetter = code("error(\"Should never be called\")")
+ }
+ }
+ val fakeOverrideFunction: ElementConfig by element(Declaration) {
+ typeKind = TypeKind.Interface
+
+ parent(declaration)
+
+ +symbol(simpleFunctionSymbolType)
+ +field("modality", type(), mutable = true)
+ +field("isBound", boolean)
+ generationCallback = {
+ addFunction(
+ FunSpec.builder("acquireSymbol")
+ .addModifiers(KModifier.ABSTRACT)
+ .addParameter("symbol", simpleFunctionSymbolType.toPoet())
+ .returns(simpleFunction.toPoet())
+ .build()
+ )
+ }
+ }
+ val fakeOverrideProperty: ElementConfig by element(Declaration) {
+ typeKind = TypeKind.Interface
+
+ parent(declaration)
+
+ +symbol(propertySymbolType)
+ +field("modality", type(), mutable = true)
+ +field("getter", simpleFunction, mutable = true, nullable = true)
+ +field("setter", simpleFunction, mutable = true, nullable = true)
+ +field("isBound", boolean)
+ generationCallback = {
+ addFunction(
+ FunSpec.builder("acquireSymbol")
+ .addModifiers(KModifier.ABSTRACT)
+ .addParameter("symbol", propertySymbolType.toPoet())
+ .returns(property.toPoet())
+ .build()
+ )
+ }
+ }
+ val field: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(possiblyExternalDeclaration)
+ parent(declarationWithVisibility)
+ parent(declarationParent)
+ parent(metadataSourceOwner)
+
+ +descriptor("PropertyDescriptor")
+ +symbol(fieldSymbolType)
+ +field("type", irTypeType, mutable = true)
+ +field("isFinal", boolean)
+ +field("isStatic", boolean)
+ +field("initializer", expressionBody, mutable = true, nullable = true, isChild = true)
+ +field("correspondingPropertySymbol", propertySymbolType, mutable = true, nullable = true)
+ }
+ val localDelegatedProperty: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(declarationWithName)
+ parent(symbolOwner)
+ parent(metadataSourceOwner)
+
+ +descriptor("VariableDescriptorWithAccessors")
+ +symbol(localDelegatedPropertySymbolType)
+ +field("type", irTypeType, mutable = true)
+ +field("isVar", boolean)
+ +field("delegate", variable, mutable = true, isChild = true)
+ +field("getter", simpleFunction, mutable = true, isChild = true)
+ +field("setter", simpleFunction, mutable = true, nullable = true, isChild = true)
+ }
+ val moduleFragment: ElementConfig by element(Declaration) {
+ visitorParent = rootElement
+ transform = true
+ transformByChildren = true
+
+ +descriptor("ModuleDescriptor")
+ +field("name", type())
+ +field("irBuiltins", type(Packages.tree, "IrBuiltIns"))
+ +listField("files", file, mutability = List, isChild = true)
+ val undefinedOffset = MemberName(Packages.tree, "UNDEFINED_OFFSET")
+ +field("startOffset", int) {
+ baseGetter = code("%M", undefinedOffset)
+ }
+ +field("endOffset", int) {
+ baseGetter = code("%M", undefinedOffset)
+ }
+ }
+ val property: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(possiblyExternalDeclaration)
+ parent(overridableDeclaration.withArgs("S" to propertySymbolType))
+ parent(metadataSourceOwner)
+ parent(attributeContainer)
+ parent(memberWithContainerSource)
+
+ +descriptor("PropertyDescriptor")
+ +symbol(propertySymbolType)
+ +field("isVar", boolean)
+ +field("isConst", boolean)
+ +field("isLateinit", boolean)
+ +field("isDelegated", boolean)
+ +field("isExpect", boolean)
+ +field("isFakeOverride", boolean)
+ +field("backingField", field, mutable = true, nullable = true, isChild = true)
+ +field("getter", simpleFunction, mutable = true, nullable = true, isChild = true)
+ +field("setter", simpleFunction, mutable = true, nullable = true, isChild = true)
+ }
+
+ //TODO: make IrScript as IrPackageFragment, because script is used as a file, not as a class
+ //NOTE: declarations and statements stored separately
+ val script: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(declarationWithName)
+ parent(declarationParent)
+ parent(statementContainer)
+ parent(metadataSourceOwner)
+
+ +symbol(scriptSymbolType)
+ // NOTE: is the result of the FE conversion, because there script interpreted as a class and has receiver
+ // TODO: consider removing from here and handle appropriately in the lowering
+ +field("thisReceiver", valueParameter, mutable = true, isChild = true)
+ +field("baseClass", irTypeType, mutable = true)
+ +listField("explicitCallParameters", valueParameter, mutability = Var, isChild = true)
+ +listField("implicitReceiversParameters", valueParameter, mutability = Var, isChild = true)
+ +listField("providedProperties", propertySymbolType, mutability = Var)
+ +listField("providedPropertiesParameters", valueParameter, mutability = Var, isChild = true)
+ +field("resultProperty", propertySymbolType, mutable = true, nullable = true)
+ +field("earlierScriptsParameter", valueParameter, mutable = true, nullable = true, isChild = true)
+ +listField("earlierScripts", scriptSymbolType, mutability = Var, nullable = true)
+ +field("targetClass", classSymbolType, mutable = true, nullable = true)
+ +field("constructor", constructor, mutable = true, nullable = true)
+ }
+ val simpleFunction: ElementConfig by element(Declaration) {
+ visitorParent = function
+
+ parent(function)
+ parent(overridableDeclaration.withArgs("S" to simpleFunctionSymbolType))
+ parent(attributeContainer)
+
+ +symbol(simpleFunctionSymbolType)
+ +field("isTailrec", boolean)
+ +field("isSuspend", boolean)
+ +field("isFakeOverride", boolean)
+ +field("isOperator", boolean)
+ +field("isInfix", boolean)
+ +field("correspondingPropertySymbol", propertySymbolType, mutable = true, nullable = true)
+ }
+ val typeAlias: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(declarationWithName)
+ parent(declarationWithVisibility)
+ parent(typeParametersContainer)
+
+ +descriptor("TypeAliasDescriptor")
+ +symbol(typeAliasSymbolType)
+ +field("isActual", boolean)
+ +field("expandedType", irTypeType, mutable = true)
+ }
+ val variable: ElementConfig by element(Declaration) {
+ visitorParent = declarationBase
+
+ parent(declarationBase)
+ parent(valueDeclaration)
+
+ +descriptor("VariableDescriptor")
+ +symbol(variableSymbolType)
+ +field("isVar", boolean)
+ +field("isConst", boolean)
+ +field("isLateinit", boolean)
+ +field("initializer", expression, nullable = true, mutable = true, isChild = true)
+ }
+ val packageFragment: ElementConfig by element(Declaration) {
+ visitorParent = rootElement
+ ownsChildren = false
+
+ parent(declarationContainer)
+ parent(symbolOwner)
+
+ +symbol(packageFragmentSymbolType)
+ +field("packageFragmentDescriptor", type(Packages.descriptors, "PackageFragmentDescriptor"))
+ +field("fqName", type())
+ }
+ val externalPackageFragment: ElementConfig by element(Declaration) {
+ visitorParent = packageFragment
+ transformByChildren = true
+
+ parent(packageFragment)
+
+ +symbol(externalPackageFragmentSymbolType)
+ +field("containerSource", type(), nullable = true)
+ }
+ val file: ElementConfig by element(Declaration) {
+ transform = true
+ transformByChildren = true
+ visitorParent = packageFragment
+
+ parent(packageFragment)
+ parent(mutableAnnotationContainerType)
+ parent(metadataSourceOwner)
+
+ +symbol(fileSymbolType)
+ +field("module", moduleFragment)
+ +field("fileEntry", type(Packages.tree, "IrFileEntry"))
+ }
+
+ val expression: ElementConfig by element(Expression) {
+ visitorParent = rootElement
+ transform = true
+ transformByChildren = true
+
+ parent(statement)
+ parent(varargElement)
+ parent(attributeContainer)
+
+ +field("attributeOwnerId", attributeContainer, mutable = true) {
+ baseDefaultValue = code("this")
+ }
+ +field("type", irTypeType, mutable = true)
+ }
+ val statementContainer: ElementConfig by element(Expression) {
+ ownsChildren = false
+
+ +listField("statements", statement, mutability = List, isChild = true)
+ }
+ val body: ElementConfig by element(Expression) {
+ transform = true
+ visitorParent = rootElement
+ visitorParam = "body"
+ transformByChildren = true
+ typeKind = TypeKind.Class
+ }
+ val expressionBody: ElementConfig by element(Expression) {
+ transform = true
+ visitorParent = body
+ visitorParam = "body"
+
+ parent(body)
+
+ +factory
+ +field("expression", expression, mutable = true, isChild = true)
+ }
+ val blockBody: ElementConfig by element(Expression) {
+ visitorParent = body
+ visitorParam = "body"
+
+ parent(body)
+ parent(statementContainer)
+
+ +factory
+ }
+ val declarationReference: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +symbol(symbolType)
+ //diff: no accept
+ }
+ val memberAccessExpression: ElementConfig by element(Expression) {
+ suppressPrint = true //todo: generate this element too
+ visitorParent = declarationReference
+ visitorName = "memberAccess"
+ transformerReturnType = rootElement
+ val s = +param("S", symbolType)
+
+ parent(declarationReference)
+
+ +field("dispatchReceiver", expression, nullable = true, mutable = true, isChild = true) {
+ baseDefaultValue = code("this")
+ }
+ +field("extensionReceiver", expression, nullable = true, mutable = true, isChild = true) {
+ baseDefaultValue = code("this")
+ }
+ +symbol(s)
+ +field("origin", statementOriginType, nullable = true)
+ +field("typeArgumentsCount", int)
+ +field("typeArgumentsByIndex", type>(irTypeType.copy(nullable = true)))
+ }
+ val functionAccessExpression: ElementConfig by element(Expression) {
+ visitorParent = memberAccessExpression
+ visitorName = "functionAccess"
+ transformerReturnType = rootElement
+
+ parent(memberAccessExpression.withArgs("S" to functionSymbolType))
+
+ +field("contextReceiversCount", int, mutable = true)
+ }
+ val constructorCall: ElementConfig by element(Expression) {
+ visitorParent = functionAccessExpression
+ transformerReturnType = rootElement
+
+ parent(functionAccessExpression)
+
+ +symbol(constructorSymbolType)
+ +field("source", type())
+ +field("constructorTypeArgumentsCount", int)
+ }
+ val getSingletonValue: ElementConfig by element(Expression) {
+ visitorParent = declarationReference
+ visitorName = "SingletonReference"
+
+ parent(declarationReference)
+ }
+ val getObjectValue: ElementConfig by element(Expression) {
+ visitorParent = getSingletonValue
+
+ parent(getSingletonValue)
+
+ +symbol(classSymbolType)
+ }
+ val getEnumValue: ElementConfig by element(Expression) {
+ visitorParent = getSingletonValue
+
+ parent(getSingletonValue)
+
+ +symbol(enumEntrySymbolType)
+ }
+
+ /**
+ * Platform-specific low-level reference to function.
+ *
+ * On JS platform it represents a plain reference to JavaScript function.
+ * On JVM platform it represents a MethodHandle constant.
+ */
+ val rawFunctionReference: ElementConfig by element(Expression) {
+ visitorParent = declarationReference
+
+ parent(declarationReference)
+
+ +symbol(functionSymbolType)
+ }
+ val containerExpression: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+ parent(statementContainer)
+
+ +field("origin", statementOriginType, nullable = true)
+ +field("isTransparentScope", boolean)
+ +listField("statements", statement, mutability = List, isChild = true) {
+ generationCallback = {
+ addModifiers(KModifier.OVERRIDE)
+ }
+ baseDefaultValue = code("ArrayList(2)")
+ }
+ }
+ val block: ElementConfig by element(Expression) {
+ visitorParent = containerExpression
+ accept = true
+
+ parent(containerExpression)
+
+ +field("isTransparentScope", boolean) {
+ baseGetter = code("false")
+ }
+ }
+ val composite: ElementConfig by element(Expression) {
+ visitorParent = containerExpression
+
+ parent(containerExpression)
+
+ +field("isTransparentScope", boolean) {
+ baseGetter = code("true")
+ }
+ }
+ val returnableBlock: ElementConfig by element(Expression) {
+ parent(block)
+ parent(symbolOwner)
+ parent(returnTarget)
+
+ +symbol(returnableBlockSymbolType)
+ +field("inlineFunctionSymbol", functionSymbolType, nullable = true)
+ }
+ val syntheticBody: ElementConfig by element(Expression) {
+ visitorParent = body
+ visitorParam = "body"
+
+ parent(body)
+
+ +field("kind", type(Packages.exprs, "IrSyntheticBodyKind"))
+ }
+ val breakContinue: ElementConfig by element(Expression) {
+ visitorParent = expression
+ visitorParam = "jump"
+
+ parent(expression)
+
+ +field("loop", loop, mutable = true)
+ +field("label", string, nullable = true, mutable = true) {
+ baseDefaultValue = code("null")
+ }
+ }
+ val `break` by element(Expression) {
+ visitorParent = breakContinue
+ visitorParam = "jump"
+
+ parent(breakContinue)
+ }
+ val `continue` by element(Expression) {
+ visitorParent = breakContinue
+ visitorParam = "jump"
+
+ parent(breakContinue)
+ }
+ val call: ElementConfig by element(Expression) {
+ visitorParent = functionAccessExpression
+
+ parent(functionAccessExpression)
+
+ +symbol(simpleFunctionSymbolType)
+ +field("superQualifierSymbol", classSymbolType, nullable = true)
+ }
+ val callableReference: ElementConfig by element(Expression) {
+ visitorParent = memberAccessExpression
+ val s = +param("S", symbolType)
+
+ parent(memberAccessExpression.withArgs("S" to s))
+
+ +field("referencedName", type())
+ }
+ val functionReference: ElementConfig by element(Expression) {
+ visitorParent = callableReference
+
+ parent(callableReference.withArgs("S" to functionSymbolType))
+
+ +field("reflectionTarget", functionSymbolType, nullable = true)
+ }
+ val propertyReference: ElementConfig by element(Expression) {
+ visitorParent = callableReference
+
+ parent(callableReference.withArgs("S" to propertySymbolType))
+
+ +field("field", fieldSymbolType, nullable = true)
+ +field("getter", simpleFunctionSymbolType, nullable = true)
+ +field("setter", simpleFunctionSymbolType, nullable = true)
+ }
+ val localDelegatedPropertyReference: ElementConfig by element(Expression) {
+ visitorParent = callableReference
+
+ parent(callableReference.withArgs("S" to localDelegatedPropertySymbolType))
+
+ +field("delegate", variableSymbolType)
+ +field("getter", simpleFunctionSymbolType)
+ +field("setter", simpleFunctionSymbolType, nullable = true)
+ }
+ val classReference: ElementConfig by element(Expression) {
+ visitorParent = declarationReference
+
+ parent(declarationReference)
+
+ +symbol(classifierSymbolType)
+ +field("classType", irTypeType, mutable = true)
+ }
+ val const: ElementConfig by element(Expression) {
+ visitorParent = expression
+ val t = +param("T")
+
+ parent(expression)
+
+ +field("kind", type(Packages.exprs, "IrConstKind").withArgs(t))
+ +field("value", t)
+ }
+ val constantValue: ElementConfig by element(Expression) {
+ visitorParent = expression
+ transformByChildren = true
+
+ parent(expression)
+
+ generationCallback = {
+ addFunction(
+ FunSpec.builder("contentEquals")
+ .addModifiers(KModifier.ABSTRACT)
+ .addParameter("other", constantValue.toPoet())
+ .returns(boolean.toPoet())
+ .build()
+ )
+ addFunction(
+ FunSpec.builder("contentHashCode")
+ .addModifiers(KModifier.ABSTRACT)
+ .returns(int.toPoet())
+ .build()
+ )
+ }
+ }
+ val constantPrimitive: ElementConfig by element(Expression) {
+ visitorParent = constantValue
+
+ parent(constantValue)
+
+ +field("value", const.withArgs("T" to TypeRef.Star), mutable = true, isChild = true)
+ }
+ val constantObject: ElementConfig by element(Expression) {
+ visitorParent = constantValue
+
+ parent(constantValue)
+
+ +field("constructor", constructorSymbolType)
+ +listField("valueArguments", constantValue, mutability = List, isChild = true)
+ +listField("typeArguments", irTypeType)
+ }
+ val constantArray: ElementConfig by element(Expression) {
+ visitorParent = constantValue
+
+ parent(constantValue)
+
+ +listField("elements", constantValue, mutability = List, isChild = true)
+ }
+ val delegatingConstructorCall: ElementConfig by element(Expression) {
+ visitorParent = functionAccessExpression
+
+ parent(functionAccessExpression)
+
+ +symbol(constructorSymbolType)
+ }
+ val dynamicExpression: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+ }
+ val dynamicOperatorExpression: ElementConfig by element(Expression) {
+ visitorParent = dynamicExpression
+
+ parent(dynamicExpression)
+
+ +field("operator", type(Packages.exprs, "IrDynamicOperator"))
+ +field("receiver", expression, mutable = true, isChild = true)
+ +listField("arguments", expression, mutability = List, isChild = true)
+ }
+ val dynamicMemberExpression: ElementConfig by element(Expression) {
+ visitorParent = dynamicExpression
+
+ parent(dynamicExpression)
+
+ +field("memberName", string)
+ +field("receiver", expression, mutable = true, isChild = true)
+ }
+ val enumConstructorCall: ElementConfig by element(Expression) {
+ visitorParent = functionAccessExpression
+
+ parent(functionAccessExpression)
+
+ +symbol(constructorSymbolType)
+ }
+ val errorExpression: ElementConfig by element(Expression) {
+ visitorParent = expression
+ accept = true
+
+ parent(expression)
+
+ +field("description", string)
+ }
+ val errorCallExpression: ElementConfig by element(Expression) {
+ visitorParent = errorExpression
+
+ parent(errorExpression)
+
+ +field("explicitReceiver", expression, nullable = true, mutable = true, isChild = true)
+ +listField("arguments", expression, mutability = List, isChild = true)
+ }
+ val fieldAccessExpression: ElementConfig by element(Expression) {
+ visitorParent = declarationReference
+ visitorName = "fieldAccess"
+ ownsChildren = false
+
+ parent(declarationReference)
+
+ +symbol(fieldSymbolType)
+ +field("superQualifierSymbol", classSymbolType, nullable = true)
+ +field("receiver", expression, nullable = true, mutable = true, isChild = true) {
+ baseDefaultValue = code("null")
+ }
+ +field("origin", statementOriginType, nullable = true)
+ }
+ val getField: ElementConfig by element(Expression) {
+ visitorParent = fieldAccessExpression
+
+ parent(fieldAccessExpression)
+ }
+ val setField: ElementConfig by element(Expression) {
+ visitorParent = fieldAccessExpression
+
+ parent(fieldAccessExpression)
+
+ +field("value", expression, mutable = true, isChild = true)
+ }
+ val functionExpression: ElementConfig by element(Expression) {
+ visitorParent = expression
+ transformerReturnType = rootElement
+
+ parent(expression)
+
+ +field("origin", statementOriginType)
+ +field("function", simpleFunction, mutable = true, isChild = true)
+ }
+ val getClass: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("argument", expression, mutable = true, isChild = true)
+ }
+ val instanceInitializerCall: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("classSymbol", classSymbolType)
+ }
+ val loop: ElementConfig by element(Expression) {
+ visitorParent = expression
+ visitorParam = "loop"
+ ownsChildren = false
+
+ parent(expression)
+
+ +field("origin", statementOriginType, nullable = true)
+ +field("body", expression, nullable = true, mutable = true, isChild = true) {
+ baseDefaultValue = code("null")
+ }
+ +field("condition", expression, mutable = true, isChild = true)
+ +field("label", string, nullable = true, mutable = true) {
+ baseDefaultValue = code("null")
+ }
+ }
+ val whileLoop: ElementConfig by element(Expression) {
+ visitorParent = loop
+ visitorParam = "loop"
+
+ parent(loop)
+ }
+ val doWhileLoop: ElementConfig by element(Expression) {
+ visitorParent = loop
+ visitorParam = "loop"
+
+ parent(loop)
+ }
+ val `return`: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("value", expression, mutable = true, isChild = true)
+ +field("returnTargetSymbol", returnTargetSymbolType)
+ }
+ val stringConcatenation: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +listField("arguments", expression, mutability = List, isChild = true)
+ }
+ val suspensionPoint: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("suspensionPointIdParameter", variable, mutable = true, isChild = true)
+ +field("result", expression, mutable = true, isChild = true)
+ +field("resumeResult", expression, mutable = true, isChild = true)
+ }
+ val suspendableExpression: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("suspensionPointId", expression, mutable = true, isChild = true)
+ +field("result", expression, mutable = true, isChild = true)
+ }
+ val `throw`: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("value", expression, mutable = true, isChild = true)
+ }
+ val `try`: ElementConfig by element(Expression) {
+ visitorParent = expression
+ visitorParam = "aTry"
+
+ parent(expression)
+
+ +field("tryResult", expression, mutable = true, isChild = true)
+ +listField("catches", catch, mutability = List, isChild = true)
+ +field("finallyExpression", expression, nullable = true, mutable = true, isChild = true)
+ }
+ val catch: ElementConfig by element(Expression) {
+ visitorParent = rootElement
+ visitorParam = "aCatch"
+ transform = true
+ transformByChildren = true
+
+ +field("catchParameter", variable, mutable = true, isChild = true)
+ +field("result", expression, mutable = true, isChild = true)
+ }
+ val typeOperatorCall: ElementConfig by element(Expression) {
+ visitorParent = expression
+ visitorName = "typeOperator"
+
+ parent(expression)
+
+ +field("operator", type(Packages.exprs, "IrTypeOperator"))
+ +field("argument", expression, mutable = true, isChild = true)
+ +field("typeOperand", irTypeType, mutable = true)
+ +field("typeOperandClassifier", classifierSymbolType)
+ }
+ val valueAccessExpression: ElementConfig by element(Expression) {
+ visitorParent = declarationReference
+ visitorName = "valueAccess"
+
+ parent(declarationReference)
+
+ +symbol(valueSymbolType)
+ +field("origin", statementOriginType, nullable = true)
+ }
+ val getValue: ElementConfig by element(Expression) {
+ visitorParent = valueAccessExpression
+
+ parent(valueAccessExpression)
+ }
+ val setValue: ElementConfig by element(Expression) {
+ visitorParent = valueAccessExpression
+
+ parent(valueAccessExpression)
+
+ +symbol(valueSymbolType)
+ +field("value", expression, mutable = true, isChild = true)
+ }
+ val varargElement: ElementConfig by element(Expression)
+ val vararg: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("varargElementType", irTypeType, mutable = true)
+ +listField("elements", varargElement, mutability = List, isChild = true)
+ }
+ val spreadElement: ElementConfig by element(Expression) {
+ visitorParent = rootElement
+ visitorParam = "spread"
+ transform = true
+ transformByChildren = true
+
+ parent(varargElement)
+
+ +field("expression", expression, mutable = true, isChild = true)
+ }
+ val `when`: ElementConfig by element(Expression) {
+ visitorParent = expression
+
+ parent(expression)
+
+ +field("origin", statementOriginType, nullable = true)
+ +listField("branches", branch, mutability = List, isChild = true)
+ }
+ val branch: ElementConfig by element(Expression) {
+ visitorParent = rootElement
+ visitorParam = "branch"
+ accept = true
+ transform = true
+ transformByChildren = true
+
+ +field("condition", expression, mutable = true, isChild = true)
+ +field("result", expression, mutable = true, isChild = true)
+ }
+ val elseBranch: ElementConfig by element(Expression) {
+ visitorParent = branch
+ visitorParam = "branch"
+ transform = true
+ transformByChildren = true
+
+ parent(branch)
+ }
+}
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/Main.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/Main.kt
new file mode 100644
index 0000000000000..912847d617d98
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/Main.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2010-2021 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.ir.generator
+
+import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil
+import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.collectPreviouslyGeneratedFiles
+import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil.removeExtraFilesFromPreviousGeneration
+import org.jetbrains.kotlin.ir.generator.model.config2model
+import org.jetbrains.kotlin.ir.generator.print.printElements
+import org.jetbrains.kotlin.ir.generator.print.printTransformer
+import org.jetbrains.kotlin.ir.generator.print.printVisitor
+import org.jetbrains.kotlin.ir.generator.print.printVisitorVoid
+import java.io.File
+
+const val BASE_PACKAGE = "org.jetbrains.kotlin.ir"
+const val VISITOR_PACKAGE = "$BASE_PACKAGE.visitors"
+
+fun main(args: Array) {
+ val generationPath = args.firstOrNull()?.let { File(it) }
+ ?: File("compiler/ir/ir.tree/gen").canonicalFile
+
+ val config = IrTree.build()
+ val model = config2model(config)
+
+ val previouslyGeneratedFiles = collectPreviouslyGeneratedFiles(generationPath)
+ val generatedFiles = sequence {
+ yieldAll(printElements(generationPath, model))
+ yield(printVisitor(generationPath, model))
+ yield(printVisitorVoid(generationPath, model))
+ yield(printTransformer(generationPath, model))
+ // IrElementTransformerVoid is too random to autogenerate
+ }.map {
+ GeneratorsFileUtil.writeFileIfContentChanged(it.file, it.newText, logNotChanged = false)
+ it.file
+ }.toList()
+ removeExtraFilesFromPreviousGeneration(previouslyGeneratedFiles, generatedFiles)
+}
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/config/AbstractTreeBuilder.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/config/AbstractTreeBuilder.kt
new file mode 100644
index 0000000000000..dc70db53c2fd3
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/config/AbstractTreeBuilder.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2010-2021 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.ir.generator.config
+
+import org.jetbrains.kotlin.ir.generator.util.TypeRef
+import org.jetbrains.kotlin.ir.generator.util.TypeVariable
+import org.jetbrains.kotlin.ir.generator.util.type
+import org.jetbrains.kotlin.types.Variance
+import kotlin.properties.PropertyDelegateProvider
+import kotlin.properties.ReadOnlyProperty
+import kotlin.reflect.KProperty
+
+abstract class AbstractTreeBuilder {
+ private val configurationCallbacks = mutableListOf<() -> ElementConfig>()
+
+ abstract val rootElement: ElementConfig
+
+ fun element(category: ElementConfig.Category, name: String? = null, initializer: ElementConfig.() -> Unit = {}): ElementConfigDel {
+ val del = ElementConfigDel(category, name)
+ configurationCallbacks.add {
+ del.element!!.apply { initializer() }
+ }
+ return del
+ }
+
+ protected fun ElementConfig.parent(type: TypeRef) {
+ parents.add(type)
+ }
+
+ protected fun param(name: String, vararg bounds: TypeRef, variance: Variance = Variance.INVARIANT): TypeVariable {
+ return TypeVariable(name, bounds.toList(), variance)
+ }
+
+ protected fun field(
+ name: String,
+ type: TypeRef?,
+ nullable: Boolean = false,
+ mutable: Boolean = false,
+ isChild: Boolean = false,
+ initializer: SimpleFieldConfig.() -> Unit = {}
+ ): SimpleFieldConfig {
+ checkChildType(isChild, type, name)
+ return SimpleFieldConfig(name, type, nullable, mutable, isChild).apply(initializer)
+ }
+
+ protected fun listField(
+ name: String,
+ elementType: TypeRef?,
+ nullable: Boolean = false,
+ mutability: ListFieldConfig.Mutability = ListFieldConfig.Mutability.Immutable,
+ isChild: Boolean = false,
+ initializer: ListFieldConfig.() -> Unit = {}
+ ): ListFieldConfig {
+ checkChildType(isChild, elementType, name)
+ return ListFieldConfig(name, elementType, nullable, mutability, isChild).apply(initializer)
+ }
+
+ private fun checkChildType(isChild: Boolean, type: TypeRef?, name: String) {
+ if (isChild) {
+ require(type == null || type is ElementConfigOrRef) { "Field $name is a child field but has non-element type $type" }
+ }
+ }
+
+ fun build(): Config {
+ val elements = configurationCallbacks.map { it() }
+ return Config(elements, rootElement)
+ }
+
+ companion object {
+ val int = type()
+ val string = type()
+ val boolean = type()
+ }
+}
+
+class ElementConfigDel(
+ private val category: ElementConfig.Category,
+ private val name: String?
+) : ReadOnlyProperty, PropertyDelegateProvider {
+ var element: ElementConfig? = null
+ private set
+
+ override fun getValue(thisRef: AbstractTreeBuilder, property: KProperty<*>): ElementConfig {
+ return element!!
+ }
+
+ override fun provideDelegate(thisRef: AbstractTreeBuilder, property: KProperty<*>): ElementConfigDel {
+ val path = thisRef.javaClass.name + "." + property.name
+ element = ElementConfig(path, name ?: property.name, category)
+ return this
+ }
+}
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/config/ConfigModel.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/config/ConfigModel.kt
new file mode 100644
index 0000000000000..bdde5eab6449e
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/config/ConfigModel.kt
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2010-2021 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.ir.generator.config
+
+import com.squareup.kotlinpoet.CodeBlock
+import com.squareup.kotlinpoet.PropertySpec
+import com.squareup.kotlinpoet.TypeSpec
+import org.jetbrains.kotlin.ir.generator.BASE_PACKAGE
+import org.jetbrains.kotlin.ir.generator.util.*
+
+class Config(
+ val elements: List,
+ val rootElement: ElementConfig,
+)
+
+class ElementConfig(
+ val propertyName: String,
+ val name: String,
+ val category: Category
+) : ElementConfigOrRef {
+ val params = mutableListOf()
+ val parents = mutableListOf()
+ val fields = mutableListOf()
+
+ var visitorName: String? = null
+ var visitorParent: ElementConfig? = null
+ var visitorParam: String? = null
+ var accept = false // By default, accept is generated only for leaves.
+ var transform = false
+ var transformByChildren = false
+ var transformerReturnType: ElementConfig? = null
+
+ var ownsChildren = true // If false, acceptChildren/transformChildren will NOT be generated.
+
+ var typeKind: TypeKind? = null
+
+ var generationCallback: (TypeSpec.Builder.() -> Unit)? = null
+ var suppressPrint = false
+
+ override val element get() = this
+ override val args get() = emptyMap()
+ override val nullable get() = false
+ override fun copy(args: Map) = ElementConfigRef(this, args, false)
+ override fun copy(nullable: Boolean) = ElementConfigRef(this, args, nullable)
+
+ operator fun TypeVariable.unaryPlus() = apply {
+ params.add(this)
+ }
+
+ operator fun FieldConfig.unaryPlus() = apply {
+ fields.add(this)
+ }
+
+ override fun toString() = element.name
+
+ enum class Category(private val packageDir: String, val defaultVisitorParam: String) {
+ Expression("expressions", "expression"),
+ Declaration("declarations", "declaration"),
+ Other("", "element");
+
+ val packageName: String get() = BASE_PACKAGE + if (packageDir.isNotEmpty()) ".$packageDir" else ""
+ }
+}
+
+sealed interface ElementConfigOrRef : ParametrizedTypeRef, TypeRefWithNullability {
+ val element: ElementConfig
+}
+
+class ElementConfigRef(
+ override val element: ElementConfig,
+ override val args: Map,
+ override val nullable: Boolean
+) : ElementConfigOrRef {
+ override fun copy(args: Map) = ElementConfigRef(element, args, nullable)
+ override fun copy(nullable: Boolean) = ElementConfigRef(element, args, nullable)
+
+ override fun toString() = element.name
+}
+
+sealed class FieldConfig(
+ val name: String,
+ val isChild: Boolean,
+) {
+ var baseDefaultValue: CodeBlock? = null
+ var baseGetter: CodeBlock? = null
+ var printProperty = true
+
+ var generationCallback: (PropertySpec.Builder.() -> Unit)? = null
+
+ override fun toString() = name
+}
+
+class SimpleFieldConfig(
+ name: String,
+ val type: TypeRef?,
+ val nullable: Boolean,
+ val mutable: Boolean,
+ isChildElement: Boolean,
+) : FieldConfig(name, isChildElement)
+
+class ListFieldConfig(
+ name: String,
+ val elementType: TypeRef?,
+ val nullable: Boolean,
+ val mutability: Mutability,
+ isChildElement: Boolean,
+) : FieldConfig(name, isChildElement) {
+ enum class Mutability {
+ Immutable,
+ Var,
+ List
+ }
+}
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt
new file mode 100644
index 0000000000000..08b6bfca72ede
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Model.kt
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2010-2021 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.ir.generator.model
+
+import com.squareup.kotlinpoet.CodeBlock
+import org.jetbrains.kotlin.ir.generator.config.ElementConfig
+import org.jetbrains.kotlin.ir.generator.config.FieldConfig
+import org.jetbrains.kotlin.ir.generator.util.*
+
+class Element(
+ config: ElementConfig,
+ val name: String,
+ val packageName: String,
+ val params: List,
+ val fields: MutableList,
+) {
+ var elementParents: List = emptyList()
+ var otherParents: List> = emptyList()
+ var visitorParent: ElementRef? = null
+ var transformerReturnType: Element? = null
+ val targetKind = config.typeKind
+ var kind: Kind? = null
+ val typeName
+ get() = elementName2typeName(name)
+ val allParents: List
+ get() = elementParents + otherParents
+ var isLeaf = false
+ var walkableChildren: List = emptyList()
+ val transformableChildren get() = walkableChildren.filter { it.transformable }
+
+ val visitFunName = "visit" + (config.visitorName ?: name).replaceFirstChar(Char::uppercaseChar)
+ val visitorParam = config.visitorParam ?: config.category.defaultVisitorParam
+ var accept = config.accept
+ val transform = config.transform
+ val transformByChildren = config.transformByChildren
+ val ownsChildren = config.ownsChildren
+
+ val generationCallback = config.generationCallback
+ val suppressPrint = config.suppressPrint
+ val propertyName = config.propertyName
+
+ override fun toString() = name
+
+ enum class Kind(val typeKind: TypeKind) {
+ FinalClass(TypeKind.Class),
+ OpenClass(TypeKind.Class),
+ AbstractClass(TypeKind.Class),
+ SealedClass(TypeKind.Class),
+ Interface(TypeKind.Interface),
+ SealedInterface(TypeKind.Interface),
+ }
+
+ companion object {
+ fun elementName2typeName(name: String) = "Ir" + name.replaceFirstChar(Char::uppercaseChar)
+ }
+}
+
+data class ElementRef(
+ val element: Element,
+ override val args: Map = emptyMap(),
+ override val nullable: Boolean = false,
+) : ParametrizedTypeRef, ClassOrElementRef {
+ override fun copy(args: Map) = ElementRef(element, args, nullable)
+ override fun copy(nullable: Boolean) = ElementRef(element, args, nullable)
+ override fun toString() = "${element.name}<${args}>"
+}
+
+sealed class Field(
+ config: FieldConfig?,
+ val name: String,
+ val nullable: Boolean,
+ val mutable: Boolean,
+ val isChild: Boolean,
+) {
+ abstract val type: TypeRef
+ abstract val baseDefaultValue: CodeBlock?
+ abstract val baseGetter: CodeBlock?
+ var isOverride = false
+ var needsDescriptorApiAnnotation = false
+ abstract val transformable: Boolean
+
+ val printProperty = config?.printProperty ?: true
+ val generationCallback = config?.generationCallback
+
+ override fun toString() = "$name: $type"
+}
+
+class SingleField(
+ config: FieldConfig?,
+ name: String,
+ override var type: TypeRef,
+ nullable: Boolean,
+ mutable: Boolean,
+ isChild: Boolean,
+ override val baseDefaultValue: CodeBlock?,
+ override val baseGetter: CodeBlock?,
+) : Field(config, name, nullable, mutable, isChild) {
+ override val transformable: Boolean
+ get() = mutable
+}
+
+class ListField(
+ config: FieldConfig?,
+ name: String,
+ var elementType: TypeRef,
+ private val listType: ClassRef,
+ nullable: Boolean,
+ mutable: Boolean,
+ isChild: Boolean,
+ override val transformable: Boolean,
+ override val baseDefaultValue: CodeBlock?,
+ override val baseGetter: CodeBlock?,
+) : Field(config, name, nullable, mutable, isChild) {
+ override val type: TypeRef
+ get() = listType.withArgs(elementType)
+}
diff --git a/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Transformations.kt b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Transformations.kt
new file mode 100644
index 0000000000000..69e395f35e5e0
--- /dev/null
+++ b/compiler/ir/ir.tree/tree-generator/src/org/jetbrains/kotlin/ir/generator/model/Transformations.kt
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2010-2021 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.ir.generator.model
+
+import org.jetbrains.kotlin.ir.generator.config.*
+import org.jetbrains.kotlin.ir.generator.elementBaseType
+import org.jetbrains.kotlin.ir.generator.util.*
+import org.jetbrains.kotlin.utils.addToStdlib.castAll
+import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
+
+private object InferredOverriddenType : TypeRef
+
+data class Model(val elements: List, val rootElement: Element)
+
+fun config2model(config: Config): Model {
+ val ec2el = mutableMapOf()
+
+ val elements = config.elements.map { ec ->
+ val fields = ec.fields.mapTo(mutableListOf()) { fc ->
+ val field = when (fc) {
+ is SimpleFieldConfig -> SingleField(
+ fc,
+ fc.name,
+ fc.type ?: InferredOverriddenType,
+ fc.nullable,
+ fc.mutable,
+ fc.isChild,
+ fc.baseDefaultValue,
+ fc.baseGetter
+ )
+ is ListFieldConfig -> {
+ val listType = if (fc.mutability == ListFieldConfig.Mutability.List) type(
+ "kotlin.collections",
+ "MutableList"
+ ) else type("kotlin.collections", "List")
+ ListField(
+ fc,
+ fc.name,
+ fc.elementType ?: InferredOverriddenType,
+ listType,
+ fc.nullable,
+ fc.mutability == ListFieldConfig.Mutability.Var,
+ fc.isChild,
+ fc.mutability != ListFieldConfig.Mutability.Immutable,
+ fc.baseDefaultValue,
+ fc.baseGetter
+ )
+ }
+ }
+ field
+ }
+
+ val element = Element(
+ ec,
+ ec.name,
+ ec.category.packageName,
+ ec.params,
+ fields
+ )
+ ec2el[ec.element] = element
+ element
+ }
+
+ val rootElement = replaceElementRefs(config, ec2el)
+ configureInterfacesAndAbstractClasses(elements)
+ addAbstractElement(elements)
+ markLeaves(elements)
+ configureDescriptorApiAnnotation(elements)
+ processFieldOverrides(elements)
+ addWalkableChildren(elements)
+
+ return Model(elements, rootElement)
+}
+
+private fun replaceElementRefs(config: Config, mapping: Map): Element {
+ val visited = mutableMapOf()
+
+ fun transform(type: TypeRef): TypeRef {
+ visited[type]?.let {
+ return it
+ }
+
+ return when (type) {
+ is ElementConfigOrRef -> {
+ val args = type.args.mapValues { transform(it.value) }
+ val el = mapping.getValue(type.element)
+ ElementRef(el, args, type.nullable)
+ }
+ is ClassRef<*> -> {
+ @Suppress("UNCHECKED_CAST") // this is the upper bound, compiler could know that, right?
+ type as ClassRef
+
+ val args = type.args.mapValues { transform(it.value) }
+ type.copy(args = args)
+ }
+ else -> type
+ }.also { visited[type] = it }
+ }
+
+ val rootEl = transform(config.rootElement) as ElementRef
+
+ for (ec in config.elements) {
+ val el = mapping[ec.element]!!
+ val (elParents, otherParents) = ec.parents
+ .map { transform(it) }
+ .partitionIsInstance()
+ el.elementParents = elParents.takeIf { it.isNotEmpty() || el == rootEl.element } ?: listOf(rootEl)
+ el.otherParents = otherParents.castAll>().toList()
+ el.visitorParent = ec.visitorParent?.let(::transform) as ElementRef?
+ el.transformerReturnType = (ec.transformerReturnType?.let(::transform) as ElementRef?)?.element
+
+ for (field in el.fields) {
+ when (field) {
+ is SingleField -> {
+ field.type = transform(field.type)
+ }
+ is ListField -> {
+ field.elementType = transform(field.elementType)
+ }
+ }
+ }
+ }
+
+ return rootEl.element
+}
+
+private fun markLeaves(elements: List) {
+ val leaves = elements.toMutableSet()
+
+ for (el in elements) {
+ for (parent in el.elementParents) {
+ leaves.remove(parent.element)
+ }
+ }
+
+ for (el in leaves) {
+ el.isLeaf = true
+ if (el.visitorParent != null) {
+ el.accept = true
+ }
+ }
+}
+
+private fun addAbstractElement(elements: List