[IR] Render different quotes depending on IR constant type

This is needed for ACTUAL_ANNOTATIONS_NOT_MATCH_EXPECT diagnostic
message, but also seems to be good improvement for IR dumps in tests.

^KT-62559
This commit is contained in:
Roman Efremov
2023-11-28 12:03:09 +01:00
committed by Space Team
parent 8f6b6e17be
commit 5cf33c3556
72 changed files with 358 additions and 349 deletions
@@ -871,9 +871,7 @@ private fun StringBuilder.renderAsAnnotationArgument(irElement: IrElement?, rend
null -> append("<null>")
is IrConstructorCall -> renderAsAnnotation(irElement, renderer, options)
is IrConst<*> -> {
append('\'')
append(irElement.value.toString())
append('\'')
renderIrConstAsAnnotationArgument(irElement)
}
is IrVararg -> {
appendIterableWith(irElement.elements, prefix = "[", postfix = "]", separator = ", ") {
@@ -888,6 +886,17 @@ private fun StringBuilder.renderAsAnnotationArgument(irElement: IrElement?, rend
}
}
private fun StringBuilder.renderIrConstAsAnnotationArgument(const: IrConst<*>) {
val quotes = when (const.kind) {
IrConstKind.String -> "\""
IrConstKind.Char -> "'"
else -> ""
}
append(quotes)
append(const.value.toString())
append(quotes)
}
private fun renderClassWithRenderer(declaration: IrClass, renderer: RenderIrElementVisitor?, options: DumpIrTreeOptions) =
declaration.runTrimEnd {
"CLASS ${renderOriginIfNonTrivial()}" +