fun toFormattedString()

in jvm-agent/src/main/org/jetbrains/lincheck/jvm/agent/analysis/controlflow/LoopInformation.kt [388:416]


    fun toFormattedString(): String {
        val sb = StringBuilder()
        if (loopInfo.loops.isEmpty()) {
            sb.appendLine("NO LOOPS")
        }
        for ((index, loop) in loopInfo.loops.withIndex()) {
            sb.appendLine("LOOP ${index + 1}")
            sb.appendLine("  HEADER: B${loop.header}")
            sb.appendLine("  BODY: ${loop.body.sorted().joinToString(", ") { "B$it" }}")
            sb.appendLine("  BACK EDGES:")
            sb.appendLine(loop.backEdges.toFormattedString().prependIndent("    "))
            sb.appendLine("  NORMAL EXITS:")
            loop.normalExits.let {
                if (it.isEmpty()) sb.appendLine("    NONE")
                else sb.appendLine(it.toFormattedString().prependIndent("    "))
            }
            sb.appendLine("  EXCEPTION EXIT HANDLERS:")
            loop.exceptionalExitHandlers.let {
                if (it.isEmpty()) sb.appendLine("    NONE")
                else sb.appendLine(it.sorted().joinToString(", ") { block -> "B$block" }.prependIndent("    "))
            }
            sb.appendLine("  EXCLUSIVE EXITS:")
            loop.exclusiveExits.let {
                if (it.isEmpty()) sb.appendLine("    NONE")
                else sb.appendLine(it.sorted().joinToString(", ") { block -> "B$block" }.prependIndent("    "))
            }
        }
        return sb.toString()
    }