From 487a698e4990f7a829f04c8796f1fe60387e93b3 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 27 May 2020 12:00:21 +0300 Subject: [PATCH] [IR] Add IrSymbolBase.toString() implementation --- .../kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 3 +-- .../kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt | 10 ++++++++-- .../kotlin/ir/symbols/impl/IrPublicSymbolBase.kt | 11 ++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 3aa09a8b885..6afc1faaabd 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -590,8 +590,7 @@ class ExpressionCodegen( val index = frameMap.getIndex(irSymbol) if (index >= 0) return index - val dump = if (irSymbol.isBound) irSymbol.owner.dump() else "??? unbound symbol ???" - throw AssertionError("Non-mapped local declaration: $dump\n in ${irFunction.dump()}") + throw AssertionError("Non-mapped local declaration: $irSymbol\n in ${irFunction.dump()}") } private fun handlePlusMinus(expression: IrSetVariable, value: IrExpression?, isMinus: Boolean): Boolean { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt index 4085289642a..b0cad857cb9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/symbols/impl/IrPrivateSymbolBase.kt @@ -22,8 +22,14 @@ import org.jetbrains.kotlin.ir.descriptors.* import org.jetbrains.kotlin.ir.expressions.IrReturnableBlock import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.util.IdSignature +import org.jetbrains.kotlin.ir.util.dump -abstract class IrSymbolBase(override val descriptor: D) : IrSymbol +abstract class IrSymbolBase(override val descriptor: D) : IrSymbol { + override fun toString(): String { + if (isBound) return owner.dump() + return "Unbound private symbol ${super.toString()}" + } +} abstract class IrBindableSymbolBase(descriptor: D) : IrBindableSymbol, IrSymbolBase(descriptor) { @@ -48,7 +54,7 @@ abstract class IrBindableSymbolBase(override val descriptor: D, override val signature: IdSignature) : IrSymbol +abstract class IrPublicSymbolBase( + override val descriptor: D, + override val signature: IdSignature +) : IrSymbol { + override fun toString(): String { + if (isBound) return owner.dump() + return "Unbound public symbol for $signature" + } +} abstract class IrBindablePublicSymbolBase(descriptor: D, sig: IdSignature) : IrBindableSymbol, IrPublicSymbolBase(descriptor, sig) {