[IR] Remove IrExpressionWithCopy and replace with shallowCopy method

This commit is contained in:
Ilya Goncharov
2021-03-29 12:51:27 +03:00
committed by TeamCityServer
parent 084d824984
commit 368ac36204
23 changed files with 126 additions and 128 deletions
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.*
import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.isTrivial
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtExpression
@@ -109,7 +110,7 @@ fun StatementGenerator.generateReceiver(defaultStartOffset: Int, defaultEndOffse
TODO("Receiver: ${receiver::class.java.simpleName}")
}
if (receiverExpression is IrExpressionWithCopy)
if (receiverExpression.isTrivial())
RematerializableValue(receiverExpression.type, receiverExpression)
else
OnceExpressionValue(receiverExpression)
@@ -19,12 +19,12 @@ package org.jetbrains.kotlin.psi2ir.intermediate
import org.jetbrains.kotlin.ir.builders.IrGeneratorContext
import org.jetbrains.kotlin.ir.builders.Scope
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrExpressionWithCopy
import org.jetbrains.kotlin.ir.expressions.IrStatementContainer
import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.util.shallowCopy
class RematerializableValue(override val type: IrType, val irExpression: IrExpressionWithCopy) : IntermediateValue {
override fun load(): IrExpression = irExpression.copy()
class RematerializableValue(override val type: IrType, val irExpression: IrExpression) : IntermediateValue {
override fun load(): IrExpression = irExpression.shallowCopy()
}
fun Scope.createTemporaryVariableInBlock(