Avoid duplicate IR elements in ForLoopsLowering (accidentally introduced

in #2620).
This commit is contained in:
Mark Punzalan
2019-09-30 15:15:59 -07:00
committed by max-kammerer
parent 3b563eaca1
commit 9daea89221
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrDoWhileLoopImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrWhileLoopImpl
import org.jetbrains.kotlin.ir.symbols.IrSymbol
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
import org.jetbrains.kotlin.ir.util.functions
import org.jetbrains.kotlin.ir.util.getPackageFragment
import org.jetbrains.kotlin.name.FqName
@@ -43,12 +44,16 @@ internal data class LoopReplacement(
internal sealed class ForLoopHeader(
protected open val headerInfo: HeaderInfo,
val inductionVariable: IrVariable,
val lastExpression: IrExpression,
lastExpression: IrExpression,
val step: IrVariable,
var loopVariable: IrVariable? = null,
val isLastInclusive: Boolean,
val declarations: List<IrVariable>
) {
val lastExpression: IrExpression = lastExpression
// Always copy `lastExpression` is it may be used in multiple conditions.
get() = field.deepCopyWithSymbols()
/** Expression used to initialize the loop variable at the beginning of the loop. */
abstract fun initializeLoopVariable(symbols: Symbols<CommonBackendContext>, builder: DeclarationIrBuilder): IrExpression