[IR] KotlinLikeDumper: super and receiver on field accesses

This commit is contained in:
Zalim Bashorov
2020-11-10 03:11:00 +03:00
committed by teamcityserver
parent 0bf587ad4b
commit 029ee6f2e7
@@ -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())
}