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:
@@ -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>
|
||||
}
|
||||
|
||||
-8
@@ -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 &&
|
||||
|
||||
+2
-5
@@ -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?
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user