diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 1128bc86338..e78e684d367 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -220,6 +220,7 @@ private val jvmFilePhases = jvmOverloadsAnnotationPhase then jvmDefaultConstructorPhase then + forLoopsPhase then flattenStringConcatenationPhase then foldConstantLoweringPhase then computeStringTrimPhase then @@ -237,7 +238,6 @@ private val jvmFilePhases = innerClassesPhase then innerClassConstructorCallsPhase then - forLoopsPhase then makePatchParentsPhase(2) then diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt index 0a60f5d7cc2..fc02dccb884 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStringConcatenationLowering.kt @@ -8,6 +8,8 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.IrElementTransformerVoidWithContext import org.jetbrains.kotlin.backend.common.lower.FlattenStringConcatenationLowering +import org.jetbrains.kotlin.backend.common.lower.flattenStringConcatenationPhase +import org.jetbrains.kotlin.backend.common.lower.loops.forLoopsPhase import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.backend.jvm.ir.JvmIrBuilder @@ -30,7 +32,10 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid internal val jvmStringConcatenationLowering = makeIrFilePhase( ::JvmStringConcatenationLowering, name = "StringConcatenation", - description = "Replace IrStringConcatenation with string builders" + description = "Replace IrStringConcatenation with string builders", + // flattenStringConcatenationPhase consolidates string concatenation expressions. + // forLoopsPhase may produce IrStringConcatenations. + prerequisite = setOf(flattenStringConcatenationPhase, forLoopsPhase) ) /**