IR: move some accept/acceptChildren/transformChildren to base classes
This will be helpful for the transition to auto-generated IR. Co-authored-by: mcpiroman <mcpiroman@gmail.com>
This commit is contained in:
+14
@@ -6,9 +6,23 @@
|
||||
package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
||||
import org.jetbrains.kotlin.ir.util.transformInPlace
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
|
||||
abstract class IrExternalPackageFragment : IrPackageFragment() {
|
||||
abstract override val symbol: IrExternalPackageFragmentSymbol
|
||||
abstract val containerSource: DeserializedContainerSource?
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitExternalPackageFragment(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
declarations.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
declarations.transformInPlace(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@ package org.jetbrains.kotlin.ir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrFileEntry
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||
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 {
|
||||
abstract override val symbol: IrFileSymbol
|
||||
@@ -16,6 +18,17 @@ abstract class IrFile : IrPackageFragment(), IrMutableAnnotationContainer, IrMet
|
||||
|
||||
abstract val fileEntry: IrFileEntry
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitFile(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrFile =
|
||||
accept(transformer, data) as IrFile
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
declarations.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
declarations.transformInPlace(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,11 @@ 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
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class IrModuleFragment : IrElementBase() {
|
||||
@@ -19,9 +20,23 @@ abstract class IrModuleFragment : IrElementBase() {
|
||||
abstract val irBuiltins: IrBuiltIns
|
||||
abstract val files: MutableList<IrFile>
|
||||
|
||||
override val startOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val endOffset: Int get() = UNDEFINED_OFFSET
|
||||
override val startOffset: Int
|
||||
get() = UNDEFINED_OFFSET
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||
override val endOffset: Int
|
||||
get() = UNDEFINED_OFFSET
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitModuleFragment(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrModuleFragment =
|
||||
accept(transformer, data) as IrModuleFragment
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
files.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
files.transformInPlace(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,9 @@ 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.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
|
||||
@@ -40,4 +43,25 @@ abstract class IrScript :
|
||||
abstract var targetClass: IrClassSymbol?
|
||||
|
||||
abstract var constructor: IrConstructor?
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitScript(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
statements.forEach { it.accept(visitor, data) }
|
||||
thisReceiver.accept(visitor, data)
|
||||
explicitCallParameters.forEach { it.accept(visitor, data) }
|
||||
implicitReceiversParameters.forEach { it.accept(visitor, data) }
|
||||
providedProperties.forEach { it.first.accept(visitor, data) }
|
||||
earlierScriptsParameter?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, 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 }
|
||||
earlierScriptsParameter = earlierScriptsParameter?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
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() {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
@@ -20,4 +22,15 @@ abstract class IrVariable : IrValueDeclaration() {
|
||||
abstract val isLateinit: Boolean
|
||||
|
||||
abstract var initializer: IrExpression?
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitVariable(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
initializer?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
initializer = initializer?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
-15
@@ -25,8 +25,6 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration
|
||||
import org.jetbrains.kotlin.ir.declarations.IrExternalPackageFragment
|
||||
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrExternalPackageFragmentSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
|
||||
@@ -55,19 +53,6 @@ class IrExternalPackageFragmentImpl(
|
||||
override val containerSource: DeserializedContainerSource?
|
||||
get() = (symbol.descriptor as? DeserializedMemberDescriptor)?.containerSource
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitExternalPackageFragment(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
declarations.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
declarations.forEachIndexed { i, irDeclaration ->
|
||||
declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun createEmptyExternalPackageFragment(module: ModuleDescriptor, fqName: FqName): IrExternalPackageFragment =
|
||||
IrExternalPackageFragmentImpl(
|
||||
|
||||
@@ -26,8 +26,6 @@ import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class IrFileImpl(
|
||||
@@ -76,17 +74,4 @@ class IrFileImpl(
|
||||
override var annotations: List<IrConstructorCall> = emptyList()
|
||||
|
||||
override var metadata: MetadataSource? = null
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitFile(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
declarations.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
declarations.forEachIndexed { i, irDeclaration ->
|
||||
declarations[i] = irDeclaration.transform(transformer, data) as IrDeclaration
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-15
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.ir.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrModuleFragmentImpl(
|
||||
@@ -32,17 +30,4 @@ class IrModuleFragmentImpl(
|
||||
override val name: Name get() = descriptor.name // TODO
|
||||
|
||||
override val files: MutableList<IrFile> = files.toMutableList()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitModuleFragment(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
files.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
files.forEachIndexed { i, irFile ->
|
||||
files[i] = irFile.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,6 @@ 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.transformInPlace
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
@@ -65,26 +62,4 @@ class IrScriptImpl(
|
||||
init {
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitScript(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
statements.forEach { it.accept(visitor, data) }
|
||||
thisReceiver.accept(visitor, data)
|
||||
explicitCallParameters.forEach { it.accept(visitor, data) }
|
||||
implicitReceiversParameters.forEach { it.accept(visitor, data) }
|
||||
providedProperties.forEach { it.first.accept(visitor, data) }
|
||||
earlierScriptsParameter?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, 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 }
|
||||
earlierScriptsParameter = earlierScriptsParameter?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrVariableImpl(
|
||||
@@ -69,15 +67,4 @@ class IrVariableImpl(
|
||||
|
||||
override val factory: IrFactory
|
||||
get() = error("Create IrVariableImpl directly")
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitVariable(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
initializer?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
initializer = initializer?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrBlock : IrContainerExpression() {
|
||||
override val isTransparentScope: Boolean
|
||||
get() = false
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBlock(this, data)
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFactory
|
||||
import org.jetbrains.kotlin.ir.util.transformInPlace
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
@@ -21,8 +21,6 @@ abstract class IrBlockBody : IrBody(), IrStatementContainer {
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
statements.forEachIndexed { i, irStatement ->
|
||||
statements[i] = irStatement.transform(transformer, data) as IrStatement
|
||||
}
|
||||
statements.transformInPlace(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,13 +13,17 @@ abstract class IrBranch : IrElementBase() {
|
||||
abstract var condition: IrExpression
|
||||
abstract var result: IrExpression
|
||||
|
||||
abstract override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrBranch
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBranch(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
condition.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrBranch =
|
||||
transformer.visitBranch(this, data)
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
condition = condition.transform(transformer, data)
|
||||
result = result.transform(transformer, data)
|
||||
|
||||
@@ -5,4 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrBreak : IrBreakContinue()
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrBreak : IrBreakContinue() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBreak(this, data)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ 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
|
||||
|
||||
abstract class IrCall(
|
||||
typeArgumentsCount: Int,
|
||||
@@ -14,4 +15,7 @@ abstract class IrCall(
|
||||
) : IrFunctionAccessExpression(typeArgumentsCount, valueArgumentsCount) {
|
||||
override abstract val symbol: IrSimpleFunctionSymbol
|
||||
abstract val superQualifierSymbol: IrClassSymbol?
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitCall(this, data)
|
||||
}
|
||||
|
||||
@@ -8,11 +8,25 @@ package org.jetbrains.kotlin.ir.expressions
|
||||
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() {
|
||||
abstract var catchParameter: IrVariable
|
||||
abstract var result: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitCatch(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
catchParameter.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrCatch =
|
||||
super.transform(transformer, data) as IrCatch
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
catchParameter = catchParameter.transform(transformer, data) as IrVariable
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,12 @@ 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
|
||||
|
||||
abstract class IrClassReference : IrDeclarationReference() {
|
||||
abstract override val symbol: IrClassifierSymbol
|
||||
abstract var classType: IrType
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitClassReference(this, data)
|
||||
}
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrComposite : IrContainerExpression() {
|
||||
override val isTransparentScope: Boolean
|
||||
get() = true
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitComposite(this, data)
|
||||
}
|
||||
|
||||
@@ -5,9 +5,14 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrConst<T> : IrExpression() {
|
||||
abstract val kind: IrConstKind<T>
|
||||
abstract val value: T
|
||||
|
||||
abstract fun copyWithOffsets(startOffset: Int, endOffset: Int): IrConst<T>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConst(this, data)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,21 @@
|
||||
|
||||
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
|
||||
|
||||
abstract class IrConstantArray : IrConstantValue() {
|
||||
abstract val elements: MutableList<IrConstantValue>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConstantArray(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
elements.forEach { value -> value.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
elements.transformInPlace { value -> value.transform(transformer, data) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,20 @@ package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
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
|
||||
|
||||
abstract class IrConstantObject : IrConstantValue() {
|
||||
abstract val constructor: IrConstructorSymbol
|
||||
abstract val valueArguments: MutableList<IrConstantValue>
|
||||
abstract val typeArguments: List<IrType>
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
valueArguments.forEach { value -> value.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
valueArguments.transformInPlace { it.transform(transformer, data) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrConstantPrimitive : IrConstantValue() {
|
||||
abstract var value: IrConst<*>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConstantPrimitive(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data) as IrConst<*>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrConstructorCall(
|
||||
typeArgumentsCount: Int,
|
||||
@@ -14,4 +15,7 @@ abstract class IrConstructorCall(
|
||||
abstract override val symbol: IrConstructorSymbol
|
||||
|
||||
abstract val constructorTypeArgumentsCount: Int
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConstructorCall(this, data)
|
||||
}
|
||||
|
||||
@@ -5,4 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrContinue : IrBreakContinue()
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrContinue : IrBreakContinue() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitContinue(this, data)
|
||||
}
|
||||
|
||||
+4
@@ -6,10 +6,14 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrDelegatingConstructorCall(
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
) : IrFunctionAccessExpression(typeArgumentsCount, valueArgumentsCount) {
|
||||
abstract override val symbol: IrConstructorSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDelegatingConstructorCall(this, data)
|
||||
}
|
||||
|
||||
@@ -5,4 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrDoWhileLoop : IrLoop()
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrDoWhileLoop : IrLoop() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDoWhileLoop(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
body?.accept(visitor, data)
|
||||
condition.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
body = body?.transform(transformer, data)
|
||||
condition = condition.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
+14
@@ -5,8 +5,22 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrDynamicMemberExpression : IrDynamicExpression() {
|
||||
abstract val memberName: String
|
||||
|
||||
abstract var receiver: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDynamicMemberExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
+20
@@ -5,10 +5,30 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrDynamicOperatorExpression : IrDynamicExpression() {
|
||||
abstract val operator: IrDynamicOperator
|
||||
|
||||
abstract var receiver: IrExpression
|
||||
|
||||
abstract val arguments: MutableList<IrExpression>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDynamicOperatorExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver.accept(visitor, data)
|
||||
for (valueArgument in arguments) {
|
||||
valueArgument.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver.transform(transformer, data)
|
||||
for (i in arguments.indices) {
|
||||
arguments[i] = arguments[i].transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrElseBranch : IrBranch()
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrElseBranch : IrBranch() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitElseBranch(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElseBranch =
|
||||
transformer.visitElseBranch(this, data)
|
||||
}
|
||||
|
||||
@@ -6,10 +6,14 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrEnumConstructorCall(
|
||||
typeArgumentsCount: Int,
|
||||
valueArgumentsCount: Int,
|
||||
) : IrFunctionAccessExpression(typeArgumentsCount, valueArgumentsCount) {
|
||||
abstract override val symbol: IrConstructorSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitEnumConstructorCall(this, data)
|
||||
}
|
||||
|
||||
@@ -5,7 +5,25 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrErrorCallExpression : IrErrorExpression() {
|
||||
abstract var explicitReceiver: IrExpression?
|
||||
abstract val arguments: MutableList<IrExpression>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitErrorCallExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
explicitReceiver = explicitReceiver?.transform(transformer, data)
|
||||
arguments.forEachIndexed { i, irExpression ->
|
||||
arguments[i] = irExpression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrErrorExpression : IrExpression() {
|
||||
abstract val description: String
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitErrorExpression(this, data)
|
||||
}
|
||||
|
||||
@@ -28,4 +28,4 @@ abstract class IrExpression : IrElementBase(), IrStatement, IrVarargElement, IrA
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
// No children by default
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,22 @@
|
||||
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
|
||||
|
||||
abstract class IrFunctionExpression : IrExpression() {
|
||||
abstract val origin: IrStatementOrigin
|
||||
|
||||
abstract var function: IrSimpleFunction
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitFunctionExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
function.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
function = function.transform(transformer, data) as IrSimpleFunction
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrGetClass : IrExpression() {
|
||||
abstract var argument: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetClass(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
argument.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
argument = argument.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,11 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrGetEnumValue : IrGetSingletonValue() {
|
||||
abstract override val symbol: IrEnumEntrySymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetEnumValue(this, data)
|
||||
}
|
||||
|
||||
@@ -5,4 +5,18 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrGetField : IrFieldAccessExpression()
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrGetField : IrFieldAccessExpression() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetField(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,11 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrGetObjectValue : IrGetSingletonValue() {
|
||||
abstract override val symbol: IrClassSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetObjectValue(this, data)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrGetValue : IrValueAccessExpression() {
|
||||
abstract fun copyWithOffsets(newStartOffset: Int, newEndOffset: Int): IrGetValue
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetValue(this, data)
|
||||
}
|
||||
|
||||
+4
@@ -6,7 +6,11 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrInstanceInitializerCall : IrExpression() {
|
||||
abstract val classSymbol: IrClassSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitInstanceInitializerCall(this, data)
|
||||
}
|
||||
|
||||
+4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.expressions
|
||||
import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||
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<IrLocalDelegatedPropertySymbol>(0) {
|
||||
abstract val delegate: IrVariableSymbol
|
||||
@@ -16,4 +17,7 @@ abstract class IrLocalDelegatedPropertyReference : IrCallableReference<IrLocalDe
|
||||
|
||||
override val valueArgumentsCount: Int
|
||||
get() = 0
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitLocalDelegatedPropertyReference(this, data)
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.expressions
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrPropertyReference(typeArgumentsCount: Int) : IrCallableReference<IrPropertySymbol>(typeArgumentsCount) {
|
||||
abstract val field: IrFieldSymbol?
|
||||
@@ -16,4 +17,7 @@ abstract class IrPropertyReference(typeArgumentsCount: Int) : IrCallableReferenc
|
||||
|
||||
override val valueArgumentsCount: Int
|
||||
get() = 0
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertyReference(this, data)
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
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.
|
||||
@@ -15,4 +16,7 @@ import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
*/
|
||||
abstract class IrRawFunctionReference : IrDeclarationReference() {
|
||||
abstract override val symbol: IrFunctionSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitRawFunctionReference(this, data)
|
||||
}
|
||||
|
||||
@@ -6,8 +6,21 @@
|
||||
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
|
||||
|
||||
abstract class IrReturn : IrExpression() {
|
||||
abstract var value: IrExpression
|
||||
abstract val returnTargetSymbol: IrReturnTargetSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitReturn(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,22 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrSetField : IrFieldAccessExpression() {
|
||||
abstract var value: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSetField(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver?.accept(visitor, data)
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver?.transform(transformer, data)
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,21 @@
|
||||
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
|
||||
|
||||
abstract class IrSetValue : IrValueAccessExpression() {
|
||||
abstract override val symbol: IrValueSymbol
|
||||
abstract var value: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSetValue(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,22 @@ 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 IrSpreadElement : IrElementBase(), IrVarargElement {
|
||||
abstract var expression: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSpreadElement(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||
accept(transformer, data) as IrSpreadElement
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
expression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
expression = expression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,22 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrStringConcatenation : IrExpression() {
|
||||
abstract val arguments: MutableList<IrExpression>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitStringConcatenation(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
arguments.forEachIndexed { i, irExpression ->
|
||||
arguments[i] = irExpression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
@@ -5,7 +5,23 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrSuspendableExpression : IrExpression() {
|
||||
abstract var suspensionPointId: IrExpression
|
||||
abstract var result: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSuspendableExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
suspensionPointId.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
suspensionPointId = suspensionPointId.transform(transformer, data)
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,26 @@
|
||||
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
|
||||
|
||||
abstract class IrSuspensionPoint : IrExpression() {
|
||||
abstract var suspensionPointIdParameter: IrVariable
|
||||
abstract var result: IrExpression
|
||||
abstract var resumeResult: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSuspensionPoint(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
suspensionPointIdParameter.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
resumeResult.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
suspensionPointIdParameter = suspensionPointIdParameter.transform(transformer, data) as IrVariable
|
||||
result = result.transform(transformer, data)
|
||||
resumeResult = resumeResult.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrSyntheticBody : IrBody() {
|
||||
abstract val kind: IrSyntheticBodyKind
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSyntheticBody(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
// no children
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
// no children
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrThrow : IrExpression() {
|
||||
abstract var value: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitThrow(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,30 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrTry : IrExpression() {
|
||||
abstract var tryResult: IrExpression
|
||||
|
||||
abstract val catches: MutableList<IrCatch>
|
||||
|
||||
abstract var finallyExpression: IrExpression?
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitTry(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
tryResult.accept(visitor, data)
|
||||
catches.forEach { it.accept(visitor, data) }
|
||||
finallyExpression?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
tryResult = tryResult.transform(transformer, data)
|
||||
catches.forEachIndexed { i, irCatch ->
|
||||
catches[i] = irCatch.transform(transformer, data)
|
||||
}
|
||||
finallyExpression = finallyExpression?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,23 @@ 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.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrTypeOperatorCall : IrExpression() {
|
||||
abstract val operator: IrTypeOperator
|
||||
abstract var argument: IrExpression
|
||||
abstract var typeOperand: IrType
|
||||
abstract val typeOperandClassifier: IrClassifierSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitTypeOperator(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
argument.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
argument = argument.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,24 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrVararg : IrExpression() {
|
||||
abstract var varargElementType: IrType
|
||||
|
||||
abstract val elements: MutableList<IrVarargElement>
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitVararg(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
elements.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
elements.forEachIndexed { i, irVarargElement ->
|
||||
elements[i] = irVarargElement.transform(transformer, data) as IrVarargElement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,20 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrWhileLoop : IrLoop()
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
abstract class IrWhileLoop : IrLoop() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitWhileLoop(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
condition.accept(visitor, data)
|
||||
body?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
condition = condition.transform(transformer, data)
|
||||
body = body?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,6 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrBlockImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -43,9 +41,6 @@ class IrBlockImpl(
|
||||
) : this(startOffset, endOffset, type, origin) {
|
||||
this.statements.addAll(statements)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBlock(this, data)
|
||||
}
|
||||
|
||||
fun IrBlockImpl.addIfNotNull(statement: IrStatement?) {
|
||||
@@ -87,17 +82,4 @@ class IrReturnableBlockImpl(
|
||||
init {
|
||||
symbol.bind(this)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBlock(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
statements.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
statements.forEachIndexed { i, irStatement ->
|
||||
statements[i] = irStatement.transform(transformer, data) as IrStatement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,14 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrBreak
|
||||
import org.jetbrains.kotlin.ir.expressions.IrLoop
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrBreakImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override var loop: IrLoop,
|
||||
) : IrBreak() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBreak(this, data)
|
||||
}
|
||||
) : IrBreak()
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.render
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrCallImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -43,9 +42,6 @@ class IrCallImpl(
|
||||
}
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitCall(this, data)
|
||||
|
||||
companion object {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun fromSymbolDescriptor(
|
||||
|
||||
+1
-5
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrClassReference
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrClassReferenceImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -27,7 +26,4 @@ class IrClassReferenceImpl(
|
||||
override var type: IrType,
|
||||
override val symbol: IrClassifierSymbol,
|
||||
override var classType: IrType
|
||||
) : IrClassReference() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitClassReference(this, data)
|
||||
}
|
||||
) : IrClassReference()
|
||||
|
||||
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.expressions.IrComposite
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrCompositeImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -37,7 +36,4 @@ class IrCompositeImpl(
|
||||
) : this(startOffset, endOffset, type, origin) {
|
||||
this.statements.addAll(statements)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitComposite(this, data)
|
||||
}
|
||||
|
||||
@@ -19,8 +19,9 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.builtins.PrimitiveType
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConst
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||
import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.getPrimitiveType
|
||||
import org.jetbrains.kotlin.ir.types.isMarkedNullable
|
||||
|
||||
class IrConstImpl<T>(
|
||||
override val startOffset: Int,
|
||||
@@ -29,9 +30,6 @@ class IrConstImpl<T>(
|
||||
override val kind: IrConstKind<T>,
|
||||
override val value: T
|
||||
) : IrConst<T>() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConst(this, data)
|
||||
|
||||
override fun copyWithOffsets(startOffset: Int, endOffset: Int) =
|
||||
IrConstImpl(startOffset, endOffset, type, kind, value)
|
||||
|
||||
|
||||
-34
@@ -9,8 +9,6 @@ import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.constructedClassType
|
||||
import org.jetbrains.kotlin.ir.util.transformInPlace
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
@@ -29,18 +27,6 @@ class IrConstantPrimitiveImpl(
|
||||
(value.type.hashCode() * 31 + value.kind.hashCode()) * 31 + value.value.hashCode()
|
||||
|
||||
override var type = value.type
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data) as IrConst<*>
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitConstantPrimitive(this, data)
|
||||
}
|
||||
}
|
||||
|
||||
class IrConstantObjectImpl constructor(
|
||||
@@ -77,14 +63,6 @@ class IrConstantObjectImpl constructor(
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
valueArguments.forEach { value -> value.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
valueArguments.transformInPlace { it.transform(transformer, data) }
|
||||
}
|
||||
}
|
||||
|
||||
class IrConstantArrayImpl(
|
||||
@@ -108,16 +86,4 @@ class IrConstantArrayImpl(
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitConstantArray(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
elements.forEach { value -> value.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
elements.transformInPlace { value -> value.transform(transformer, data) }
|
||||
}
|
||||
}
|
||||
|
||||
-5
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrConstructorCallImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -24,11 +23,7 @@ class IrConstructorCallImpl(
|
||||
valueArgumentsCount: Int,
|
||||
override val origin: IrStatementOrigin? = null,
|
||||
) : IrConstructorCall(typeArgumentsCount, valueArgumentsCount) {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitConstructorCall(this, data)
|
||||
|
||||
companion object {
|
||||
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun fromSymbolDescriptor(
|
||||
startOffset: Int,
|
||||
|
||||
@@ -19,14 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrContinue
|
||||
import org.jetbrains.kotlin.ir.expressions.IrLoop
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrContinueImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override var loop: IrLoop,
|
||||
) : IrContinue() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitContinue(this, data)
|
||||
}
|
||||
) : IrContinue()
|
||||
|
||||
-5
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.ir.expressions.typeParametersCount
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.util.allTypeParameters
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrDelegatingConstructorCallImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -36,10 +35,6 @@ class IrDelegatingConstructorCallImpl(
|
||||
override val origin: IrStatementOrigin?
|
||||
get() = null
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitDelegatingConstructorCall(this, data)
|
||||
}
|
||||
|
||||
companion object {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun fromSymbolDescriptor(
|
||||
|
||||
+1
-17
@@ -19,26 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrDoWhileLoop
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrDoWhileLoopImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override val origin: IrStatementOrigin?,
|
||||
) : IrDoWhileLoop() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitDoWhileLoop(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
body?.accept(visitor, data)
|
||||
condition.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
body = body?.transform(transformer, data)
|
||||
condition = condition.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrDoWhileLoop()
|
||||
|
||||
+1
-14
@@ -8,8 +8,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrDynamicMemberExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrDynamicMemberExpressionImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -17,15 +15,4 @@ class IrDynamicMemberExpressionImpl(
|
||||
override var type: IrType,
|
||||
override val memberName: String,
|
||||
override var receiver: IrExpression
|
||||
) : IrDynamicMemberExpression() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDynamicMemberExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrDynamicMemberExpression()
|
||||
|
||||
-19
@@ -9,8 +9,6 @@ import org.jetbrains.kotlin.ir.expressions.IrDynamicOperator
|
||||
import org.jetbrains.kotlin.ir.expressions.IrDynamicOperatorExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrDynamicOperatorExpressionImpl(
|
||||
@@ -22,21 +20,4 @@ class IrDynamicOperatorExpressionImpl(
|
||||
override lateinit var receiver: IrExpression
|
||||
|
||||
override val arguments: MutableList<IrExpression> = SmartList()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitDynamicOperatorExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver.accept(visitor, data)
|
||||
for (valueArgument in arguments) {
|
||||
valueArgument.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver.transform(transformer, data)
|
||||
for (i in arguments.indices) {
|
||||
arguments[i] = arguments[i].transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-5
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.ir.expressions.IrEnumConstructorCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrEnumConstructorCallImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -34,10 +33,6 @@ class IrEnumConstructorCallImpl(
|
||||
override val origin: IrStatementOrigin?
|
||||
get() = null
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitEnumConstructorCall(this, data)
|
||||
}
|
||||
|
||||
companion object {
|
||||
@ObsoleteDescriptorBasedAPI
|
||||
fun fromSymbolDescriptor(
|
||||
|
||||
-18
@@ -19,8 +19,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrErrorCallExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrErrorCallExpressionImpl(
|
||||
@@ -35,20 +33,4 @@ class IrErrorCallExpressionImpl(
|
||||
fun addArgument(argument: IrExpression) {
|
||||
arguments.add(argument)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitErrorCallExpression(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
explicitReceiver?.accept(visitor, data)
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
explicitReceiver = explicitReceiver?.transform(transformer, data)
|
||||
arguments.forEachIndexed { i, irExpression ->
|
||||
arguments[i] = irExpression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-5
@@ -18,14 +18,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrErrorExpression
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrErrorExpressionImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override val description: String
|
||||
) : IrErrorExpression() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitErrorExpression(this, data)
|
||||
}
|
||||
) : IrErrorExpression()
|
||||
|
||||
+1
-15
@@ -9,8 +9,6 @@ import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrFunctionExpressionImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -18,16 +16,4 @@ class IrFunctionExpressionImpl(
|
||||
override var type: IrType,
|
||||
override var function: IrSimpleFunction,
|
||||
override val origin: IrStatementOrigin
|
||||
) : IrFunctionExpression() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitFunctionExpression(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
function.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
function = function.transform(transformer, data) as IrSimpleFunction
|
||||
}
|
||||
}
|
||||
) : IrFunctionExpression()
|
||||
|
||||
@@ -19,24 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrGetClass
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetClassImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override var argument: IrExpression,
|
||||
) : IrGetClass() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitGetClass(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
argument.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
argument = argument.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrGetClass()
|
||||
|
||||
+1
-6
@@ -19,15 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrGetEnumValue
|
||||
import org.jetbrains.kotlin.ir.symbols.IrEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetEnumValueImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override val symbol: IrEnumEntrySymbol,
|
||||
) : IrGetEnumValue() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitGetEnumValue(this, data)
|
||||
}
|
||||
}
|
||||
) : IrGetEnumValue()
|
||||
|
||||
@@ -22,8 +22,6 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetFieldImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -43,16 +41,4 @@ class IrGetFieldImpl(
|
||||
) : this(startOffset, endOffset, symbol, type, origin, superQualifierSymbol) {
|
||||
this.receiver = receiver
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitGetField(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-6
@@ -16,18 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrGetObjectValue
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetObjectValueImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override val symbol: IrClassSymbol
|
||||
) : IrGetObjectValue() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetObjectValue(this, data)
|
||||
}
|
||||
) : IrGetObjectValue()
|
||||
|
||||
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.ir.expressions.IrGetValue
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrGetValueImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -25,9 +24,6 @@ class IrGetValueImpl(
|
||||
origin: IrStatementOrigin? = null
|
||||
) : this(startOffset, endOffset, symbol.owner.type, symbol, origin)
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitGetValue(this, data)
|
||||
|
||||
override fun copyWithOffsets(newStartOffset: Int, newEndOffset: Int): IrGetValue =
|
||||
IrGetValueImpl(newStartOffset, newEndOffset, type, symbol, origin)
|
||||
}
|
||||
|
||||
+1
-6
@@ -19,15 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrInstanceInitializerCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrInstanceInitializerCallImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val classSymbol: IrClassSymbol,
|
||||
override var type: IrType,
|
||||
) : IrInstanceInitializerCall() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitInstanceInitializerCall(this, data)
|
||||
}
|
||||
}
|
||||
) : IrInstanceInitializerCall()
|
||||
|
||||
-4
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.ir.symbols.IrLocalDelegatedPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrLocalDelegatedPropertyReferenceImpl(
|
||||
@@ -50,7 +49,4 @@ class IrLocalDelegatedPropertyReferenceImpl(
|
||||
override fun putValueArgument(index: Int, valueArgument: IrExpression?): Unit = throwNoValueArguments()
|
||||
|
||||
override fun removeValueArgument(index: Int): Unit = throwNoValueArguments()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitLocalDelegatedPropertyReference(this, data)
|
||||
}
|
||||
|
||||
-4
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class IrPropertyReferenceImpl(
|
||||
@@ -51,7 +50,4 @@ class IrPropertyReferenceImpl(
|
||||
override fun putValueArgument(index: Int, valueArgument: IrExpression?): Unit = throwNoValueArguments()
|
||||
|
||||
override fun removeValueArgument(index: Int): Unit = throwNoValueArguments()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertyReference(this, data)
|
||||
}
|
||||
|
||||
+1
-6
@@ -19,15 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrRawFunctionReference
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrRawFunctionReferenceImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override val symbol: IrFunctionSymbol,
|
||||
) : IrRawFunctionReference() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitRawFunctionReference(this, data)
|
||||
}
|
||||
}
|
||||
) : IrRawFunctionReference()
|
||||
|
||||
@@ -20,8 +20,6 @@ import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrReturn
|
||||
import org.jetbrains.kotlin.ir.symbols.IrReturnTargetSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrReturnImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -29,15 +27,4 @@ class IrReturnImpl(
|
||||
override var type: IrType,
|
||||
override val returnTargetSymbol: IrReturnTargetSymbol,
|
||||
override var value: IrExpression
|
||||
) : IrReturn() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitReturn(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrReturn()
|
||||
|
||||
@@ -22,8 +22,6 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSetFieldImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -47,18 +45,4 @@ class IrSetFieldImpl(
|
||||
}
|
||||
|
||||
override lateinit var value: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSetField(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
receiver?.accept(visitor, data)
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
receiver = receiver?.transform(transformer, data)
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,8 +21,6 @@ import org.jetbrains.kotlin.ir.expressions.IrSetValue
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSetValueImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -32,22 +30,9 @@ class IrSetValueImpl(
|
||||
override var value: IrExpression,
|
||||
override val origin: IrStatementOrigin?
|
||||
) : IrSetValue() {
|
||||
|
||||
init {
|
||||
if (symbol.isBound) {
|
||||
assert(symbol.owner.isAssignable) { "Only assignable IrValues can be set" }
|
||||
}
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSetValue(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-15
@@ -18,23 +18,9 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSpreadElement
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSpreadElementImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var expression: IrExpression,
|
||||
) : IrSpreadElement() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSpreadElement(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
expression.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
expression = expression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrSpreadElement()
|
||||
|
||||
-15
@@ -19,8 +19,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStringConcatenation
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrStringConcatenationImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -37,17 +35,4 @@ class IrStringConcatenationImpl(
|
||||
}
|
||||
|
||||
override val arguments: MutableList<IrExpression> = ArrayList()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitStringConcatenation(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
arguments.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
arguments.forEachIndexed { i, irExpression ->
|
||||
arguments[i] = irExpression.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,6 @@ import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSuspendableExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSuspensionPoint
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSuspensionPointImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -20,22 +18,7 @@ class IrSuspensionPointImpl(
|
||||
override var suspensionPointIdParameter: IrVariable,
|
||||
override var result: IrExpression,
|
||||
override var resumeResult: IrExpression
|
||||
) : IrSuspensionPoint() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSuspensionPoint(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
suspensionPointIdParameter.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
resumeResult.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
suspensionPointIdParameter = suspensionPointIdParameter.transform(transformer, data) as IrVariable
|
||||
result = result.transform(transformer, data)
|
||||
resumeResult = resumeResult.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrSuspensionPoint()
|
||||
|
||||
class IrSuspendableExpressionImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -43,17 +26,4 @@ class IrSuspendableExpressionImpl(
|
||||
override var type: IrType,
|
||||
override var suspensionPointId: IrExpression,
|
||||
override var result: IrExpression
|
||||
) : IrSuspendableExpression() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitSuspendableExpression(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
suspensionPointId.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
suspensionPointId = suspensionPointId.transform(transformer, data)
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrSuspendableExpression()
|
||||
|
||||
-14
@@ -18,26 +18,12 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSyntheticBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrSyntheticBodyKind
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrSyntheticBodyImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override val kind: IrSyntheticBodyKind
|
||||
) : IrSyntheticBody() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitSyntheticBody(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
// no children
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
// no children
|
||||
}
|
||||
|
||||
override fun toString(): String =
|
||||
"IrSyntheticBodyImpl($kind)"
|
||||
}
|
||||
|
||||
@@ -19,23 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrThrow
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrThrowImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override var value: IrExpression,
|
||||
) : IrThrow() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitThrow(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
value.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
value = value.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrThrow()
|
||||
|
||||
@@ -21,8 +21,6 @@ import org.jetbrains.kotlin.ir.expressions.IrCatch
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrTry
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrTryImpl(
|
||||
@@ -48,24 +46,6 @@ class IrTryImpl(
|
||||
override val catches: MutableList<IrCatch> = SmartList()
|
||||
|
||||
override var finallyExpression: IrExpression? = null
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitTry(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
tryResult.accept(visitor, data)
|
||||
catches.forEach { it.accept(visitor, data) }
|
||||
finallyExpression?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
tryResult = tryResult.transform(transformer, data)
|
||||
catches.forEachIndexed { i, irCatch ->
|
||||
catches[i] = irCatch.transform(transformer, data)
|
||||
}
|
||||
finallyExpression = finallyExpression?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
class IrCatchImpl(
|
||||
@@ -83,18 +63,4 @@ class IrCatchImpl(
|
||||
}
|
||||
|
||||
override lateinit var result: IrExpression
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitCatch(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
catchParameter.accept(visitor, data)
|
||||
result.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
catchParameter = catchParameter.transform(transformer, data) as IrVariable
|
||||
result = result.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
-13
@@ -22,8 +22,6 @@ import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrTypeOperatorCallImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -35,15 +33,4 @@ class IrTypeOperatorCallImpl(
|
||||
) : IrTypeOperatorCall() {
|
||||
override val typeOperandClassifier: IrClassifierSymbol
|
||||
get() = typeOperand.classifierOrFail
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitTypeOperator(this, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
argument.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
argument = argument.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrVararg
|
||||
import org.jetbrains.kotlin.ir.expressions.IrVarargElement
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
|
||||
class IrVarargImpl(
|
||||
@@ -40,18 +38,4 @@ class IrVarargImpl(
|
||||
}
|
||||
|
||||
override val elements: MutableList<IrVarargElement> = SmartList()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitVararg(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
elements.forEach { it.accept(visitor, data) }
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
elements.forEachIndexed { i, irVarargElement ->
|
||||
elements[i] = irVarargElement.transform(transformer, data) as IrVarargElement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrWhenImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -48,12 +46,6 @@ open class IrBranchImpl(
|
||||
) : IrBranch() {
|
||||
constructor(condition: IrExpression, result: IrExpression) :
|
||||
this(condition.startOffset, result.endOffset, condition, result)
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitBranch(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrBranch =
|
||||
transformer.visitBranch(this, data)
|
||||
}
|
||||
|
||||
class IrElseBranchImpl(
|
||||
@@ -64,10 +56,4 @@ class IrElseBranchImpl(
|
||||
) : IrElseBranch() {
|
||||
constructor(condition: IrExpression, result: IrExpression) :
|
||||
this(condition.startOffset, result.endOffset, condition, result)
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitElseBranch(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElseBranch =
|
||||
transformer.visitElseBranch(this, data)
|
||||
}
|
||||
|
||||
+1
-17
@@ -19,26 +19,10 @@ package org.jetbrains.kotlin.ir.expressions.impl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||
|
||||
class IrWhileLoopImpl(
|
||||
override val startOffset: Int,
|
||||
override val endOffset: Int,
|
||||
override var type: IrType,
|
||||
override val origin: IrStatementOrigin?,
|
||||
) : IrWhileLoop() {
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitWhileLoop(this, data)
|
||||
}
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
|
||||
condition.accept(visitor, data)
|
||||
body?.accept(visitor, data)
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
|
||||
condition = condition.transform(transformer, data)
|
||||
body = body?.transform(transformer, data)
|
||||
}
|
||||
}
|
||||
) : IrWhileLoop()
|
||||
|
||||
Reference in New Issue
Block a user