diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt index 774f5ff8f42..9321184ff9a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt @@ -127,8 +127,9 @@ class FirDefaultErrorMessages : DefaultErrorMessages.Extension { } companion object { - fun getRendererForDiagnostic(diagnostic: FirDiagnostic<*>): FirDiagnosticRenderer<*>? { - return MAP[diagnostic.factory] + fun getRendererForDiagnostic(diagnostic: FirDiagnostic<*>): FirDiagnosticRenderer<*> { + val factory = diagnostic.factory + return MAP[factory] ?: factory.defaultRenderer } // * - The old FE reports these diagnostics with additional parameters diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt index 57728ae4ac3..9cfdda9721c 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactory.kt @@ -19,6 +19,8 @@ sealed class AbstractFirDiagnosticFactory + abstract val defaultRenderer: FirDiagnosticRenderer<*> + override fun toString(): String { return name } @@ -27,6 +29,13 @@ sealed class AbstractFirDiagnosticFactory( name: String, severity: Severity, override val psiDiagnosticFactory: DiagnosticFactory0

) : AbstractFirDiagnosticFactory>(name, severity) { + companion object { + private val DefaultRenderer = SimpleFirDiagnosticRenderer("") + } + + override val defaultRenderer: FirDiagnosticRenderer<*> + get() = DefaultRenderer + fun on(element: E): FirSimpleDiagnostic { return when (element) { is FirPsiSourceElement<*> -> FirPsiSimpleDiagnostic( @@ -41,6 +50,16 @@ class FirDiagnosticFactory0( class FirDiagnosticFactory1( name: String, severity: Severity, override val psiDiagnosticFactory: DiagnosticFactory1 ) : AbstractFirDiagnosticFactory>(name, severity) { + companion object { + private val DefaultRenderer = FirDiagnosticWithParameters1Renderer( + "{0}", + FirDiagnosticRenderers.TO_STRING + ) + } + + override val defaultRenderer: FirDiagnosticRenderer<*> + get() = DefaultRenderer + fun on(element: E, a: A): FirDiagnosticWithParameters1 { return when (element) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters1( @@ -55,6 +74,17 @@ class FirDiagnosticFactory1( class FirDiagnosticFactory2( name: String, severity: Severity, override val psiDiagnosticFactory: DiagnosticFactory2 ) : AbstractFirDiagnosticFactory>(name, severity) { + companion object { + private val DefaultRenderer = FirDiagnosticWithParameters2Renderer( + "{0}, {1}", + FirDiagnosticRenderers.TO_STRING, + FirDiagnosticRenderers.TO_STRING + ) + } + + override val defaultRenderer: FirDiagnosticRenderer<*> + get() = DefaultRenderer + fun on(element: E, a: A, b: B): FirDiagnosticWithParameters2 { return when (element) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters2( @@ -69,6 +99,18 @@ class FirDiagnosticFactory2( name: String, severity: Severity, override val psiDiagnosticFactory: DiagnosticFactory3 ) : AbstractFirDiagnosticFactory>(name, severity) { + companion object { + private val DefaultRenderer = FirDiagnosticWithParameters3Renderer( + "{0}, {1}, {2}", + FirDiagnosticRenderers.TO_STRING, + FirDiagnosticRenderers.TO_STRING, + FirDiagnosticRenderers.TO_STRING + ) + } + + override val defaultRenderer: FirDiagnosticRenderer<*> + get() = DefaultRenderer + fun on(element: E, a: A, b: B, c: C): FirDiagnosticWithParameters3 { return when (element) { is FirPsiSourceElement<*> -> FirPsiDiagnosticWithParameters3(