From 86996bf54605680bee80e56c7612f73c1e4d28c3 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 18 Dec 2019 12:23:31 +0100 Subject: [PATCH] IR: workaround exceptions in IrElement.dump Fallback to IrElement.render if exception happens in DumpIrTreeVisitor (due, for example, to invalid IR structure). --- .../src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt index 1906552ab33..41023af55fb 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt @@ -28,9 +28,13 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid import org.jetbrains.kotlin.utils.Printer fun IrElement.dump(normalizeNames: Boolean = false): String = - StringBuilder().also { sb -> - accept(DumpIrTreeVisitor(sb, normalizeNames), "") - }.toString() + try { + StringBuilder().also { sb -> + accept(DumpIrTreeVisitor(sb, normalizeNames), "") + }.toString() + } catch (e: Exception) { + "(Full dump is not available: ${e.message})\n" + render() + } fun IrFile.dumpTreesFromLineNumber(lineNumber: Int, normalizeNames: Boolean = false): String { val sb = StringBuilder()