From 029ee6f2e79b15f83130cc91489a61147cfe2722 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Tue, 10 Nov 2020 03:11:00 +0300 Subject: [PATCH] [IR] KotlinLikeDumper: super and receiver on field accesses --- .../kotlin/ir/util/KotlinLikeDumper.kt | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinLikeDumper.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinLikeDumper.kt index 6d193058366..211c1463702 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinLikeDumper.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/KotlinLikeDumper.kt @@ -978,18 +978,31 @@ private class KotlinLikeDumper(val p: Printer, val options: KotlinLikeDumpOption } override fun visitGetField(expression: IrGetField, data: IrDeclaration?) { - expression.printFieldAccess() + expression.printFieldAccess(data) } override fun visitSetField(expression: IrSetField, data: IrDeclaration?) { - expression.printFieldAccess() + expression.printFieldAccess(data) p.printWithNoIndent(" = ") expression.value.accept(this, data) } - private fun IrFieldAccessExpression.printFieldAccess() { - // TODO receiver, superQualifierSymbol? + private fun IrFieldAccessExpression.printFieldAccess(data: IrDeclaration?) { + // TODO type // TODO is not valid kotlin + receiver?.accept(this@KotlinLikeDumper, data) + superQualifierSymbol?.let { + // TODO should we print super classifier somehow? + // TODO which supper? smart mode? + // TODO super and receiver at the same time: + // compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.kt + p.printWithNoIndent("super") + } + + if (receiver != null || superQualifierSymbol != null) { + p.printWithNoIndent(".") + } + p.printWithNoIndent("#" + symbol.owner.name.asString()) }