Move ForLoopsLowering before JvmStringConcatenationLowering.

ForLoopsLowering may produce IrStringConcatenations which should be
eliminated before codegen.
This commit is contained in:
Mark Punzalan
2019-10-23 16:14:39 -07:00
committed by max-kammerer
parent 8a4185202f
commit 27642514b1
2 changed files with 7 additions and 2 deletions
@@ -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
@@ -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)
)
/**