IR: remove IrConstantObject.putArgument, IrConstantArray.putElement

Change `valueArguments` and `elements` types to be mutable lists. This
will simplify IR tree generator.
This commit is contained in:
Alexander Udalov
2022-01-12 02:01:11 +01:00
parent 816acaadc3
commit 81106526b1
3 changed files with 4 additions and 17 deletions
@@ -19,12 +19,10 @@ abstract class IrConstantPrimitive : IrConstantValue() {
abstract class IrConstantObject : IrConstantValue() {
abstract val constructor: IrConstructorSymbol
abstract val valueArguments: List<IrConstantValue>
abstract val valueArguments: MutableList<IrConstantValue>
abstract val typeArguments: List<IrType>
abstract fun putArgument(index: Int, value: IrConstantValue)
}
abstract class IrConstantArray : IrConstantValue() {
abstract val elements: List<IrConstantValue>
abstract fun putElement(index: Int, value: IrConstantValue)
abstract val elements: MutableList<IrConstantValue>
}
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.ir.expressions.impl
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.constructedClassType
import org.jetbrains.kotlin.ir.util.transformInPlace
@@ -58,10 +57,6 @@ class IrConstantObjectImpl constructor(
return visitor.visitConstantObject(this, data)
}
override fun putArgument(index: Int, value: IrConstantValue) {
valueArguments[index] = value
}
override fun contentEquals(other: IrConstantValue): Boolean =
other is IrConstantObject &&
other.type == type &&
@@ -99,9 +94,6 @@ class IrConstantArrayImpl(
initElements: List<IrConstantValue>,
) : IrConstantArray() {
override val elements = SmartList(initElements)
override fun putElement(index: Int, value: IrConstantValue) {
elements[index] = value
}
override fun contentEquals(other: IrConstantValue): Boolean =
other is IrConstantArray &&
@@ -21,8 +21,6 @@ import org.jetbrains.kotlin.ir.util.defaultType
import org.jetbrains.kotlin.ir.util.render
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import java.lang.IllegalStateException
/**
* Transforms expressions depending on the context they are used in.
@@ -281,7 +279,7 @@ internal abstract class AbstractValueUsageTransformer(
?: throw IllegalStateException("Unexpected array type ${expression.type.render()}")
expression.elements.forEachIndexed { index, it ->
expression.putElement(index, it.useAs(elementType) as IrConstantValue)
expression.elements[index] = it.useAs(elementType) as IrConstantValue
}
return expression
}
@@ -290,7 +288,7 @@ internal abstract class AbstractValueUsageTransformer(
expression.transformChildrenVoid(this)
expression.valueArguments.forEachIndexed { index, arg ->
expression.putArgument(index, arg.useAsArgument(expression.constructor.owner.valueParameters[index]) as IrConstantValue)
expression.valueArguments[index] = arg.useAsArgument(expression.constructor.owner.valueParameters[index]) as IrConstantValue
}
return expression
}
@@ -298,4 +296,3 @@ internal abstract class AbstractValueUsageTransformer(
// TODO: IrStringConcatenation, IrEnumEntry?
}