[klib] Make CONFLICTING_KLIB_SIGNATURES_DATA diagnostic more precise

Show what kind of declarations exactly are clashing: functions,
properties, or fields.

This is so that diagnostics about clashing properties and fields are
distinguishable from one another, since properties and fields
are rendered the same way in those diagnostics:
This commit is contained in:
Sergej Jaskiewicz
2024-02-08 19:05:44 +01:00
committed by Space Team
parent d80a67652f
commit 03ca64c954
5 changed files with 42 additions and 28 deletions
@@ -15,6 +15,9 @@ import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
import org.jetbrains.kotlin.diagnostics.rendering.Renderer
import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrField
import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor
import org.jetbrains.kotlin.ir.util.render
import org.jetbrains.kotlin.renderer.DescriptorRenderer
@@ -48,5 +51,13 @@ internal object SerializationDiagnosticRenderers {
},
renderSignature = { append(it.signature.render()) },
declarations = { it.declarations.map(IrDeclaration::toIrBasedDescriptor) },
declarationKind = { data ->
when {
data.declarations.all { it is IrSimpleFunction } -> "functions"
data.declarations.all { it is IrProperty } -> "properties"
data.declarations.all { it is IrField } -> "fields"
else -> "declarations"
}
},
)
}