IR: use mutable lists in IrStringConcatenation, IrTry, IrVararg
Make addArgument/addElement/putElement extension functions. This will simplify transition to auto-generated IR. Co-authored-by: mcpiroman <mcpiroman@gmail.com>
This commit is contained in:
+2
-3
@@ -447,10 +447,9 @@ internal class AdapterGenerator(
|
||||
if (argument !is FirVarargArgumentsExpression || argument.arguments.size != elements.size) {
|
||||
return this
|
||||
}
|
||||
val argumentMapping = this.elements.zip(argument.arguments).toMap()
|
||||
val argumentMapping = elements.zip(argument.arguments).toMap()
|
||||
// [IrElementTransformer] is not preferred, since it's hard to visit vararg elements only.
|
||||
val irVarargElements = elements as MutableList<IrVarargElement>
|
||||
irVarargElements.replaceAll { irVarargElement ->
|
||||
elements.replaceAll { irVarargElement ->
|
||||
if (irVarargElement is IrExpression) {
|
||||
val firVarargArgument =
|
||||
argumentMapping[irVarargElement] ?: error("Can't find the original FirExpression for ${irVarargElement.render()}")
|
||||
|
||||
+1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.IrVariable
|
||||
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.addArgument
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||
import org.jetbrains.kotlin.ir.types.defaultType
|
||||
import org.jetbrains.kotlin.ir.types.isInt
|
||||
|
||||
@@ -36,3 +36,15 @@ var IrDynamicOperatorExpression.right: IrExpression
|
||||
|
||||
fun IrFunctionAccessExpression.putArgument(parameter: IrValueParameter, argument: IrExpression): Unit =
|
||||
putArgument(symbol.owner, parameter, argument)
|
||||
|
||||
fun IrVararg.putElement(i: Int, element: IrVarargElement) {
|
||||
elements[i] = element
|
||||
}
|
||||
|
||||
fun IrVararg.addElement(varargElement: IrVarargElement) {
|
||||
elements.add(varargElement)
|
||||
}
|
||||
|
||||
fun IrStringConcatenation.addArgument(argument: IrExpression) {
|
||||
arguments.add(argument)
|
||||
}
|
||||
|
||||
+1
-3
@@ -6,7 +6,5 @@
|
||||
package org.jetbrains.kotlin.ir.expressions
|
||||
|
||||
abstract class IrStringConcatenation : IrExpression() {
|
||||
abstract val arguments: List<IrExpression>
|
||||
|
||||
abstract fun addArgument(argument: IrExpression)
|
||||
abstract val arguments: MutableList<IrExpression>
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.ir.expressions
|
||||
abstract class IrTry : IrExpression() {
|
||||
abstract var tryResult: IrExpression
|
||||
|
||||
abstract val catches: List<IrCatch>
|
||||
abstract val catches: MutableList<IrCatch>
|
||||
|
||||
abstract var finallyExpression: IrExpression?
|
||||
}
|
||||
|
||||
@@ -10,7 +10,5 @@ import org.jetbrains.kotlin.ir.types.IrType
|
||||
abstract class IrVararg : IrExpression() {
|
||||
abstract var varargElementType: IrType
|
||||
|
||||
abstract val elements: List<IrVarargElement>
|
||||
|
||||
abstract fun putElement(i: Int, element: IrVarargElement)
|
||||
abstract val elements: MutableList<IrVarargElement>
|
||||
}
|
||||
|
||||
-5
@@ -21,7 +21,6 @@ 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
|
||||
import java.util.*
|
||||
|
||||
class IrStringConcatenationImpl(
|
||||
override val startOffset: Int,
|
||||
@@ -39,10 +38,6 @@ class IrStringConcatenationImpl(
|
||||
|
||||
override val arguments: MutableList<IrExpression> = ArrayList()
|
||||
|
||||
override fun addArgument(argument: IrExpression) {
|
||||
arguments.add(argument)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitStringConcatenation(this, data)
|
||||
|
||||
|
||||
@@ -41,14 +41,6 @@ class IrVarargImpl(
|
||||
|
||||
override val elements: MutableList<IrVarargElement> = SmartList()
|
||||
|
||||
fun addElement(varargElement: IrVarargElement) {
|
||||
elements.add(varargElement)
|
||||
}
|
||||
|
||||
override fun putElement(i: Int, element: IrVarargElement) {
|
||||
elements[i] = element
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitVararg(this, data)
|
||||
}
|
||||
|
||||
@@ -10,11 +10,8 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.mapTypeParameters
|
||||
import org.jetbrains.kotlin.ir.expressions.mapValueParameters
|
||||
import org.jetbrains.kotlin.ir.symbols.IrClassifierSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
|
||||
Reference in New Issue
Block a user