diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt index e13eb34ced3..0b66f31ac14 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticRenderer.kt @@ -9,12 +9,18 @@ import org.jetbrains.kotlin.diagnostics.rendering.* interface FirDiagnosticRenderer> : DiagnosticRenderer { override fun render(diagnostic: D): String + + override fun renderParameters(diagnostic: D): Array } class SimpleFirDiagnosticRenderer(private val message: String) : FirDiagnosticRenderer> { override fun render(diagnostic: FirSimpleDiagnostic<*>): String { return message } + + override fun renderParameters(diagnostic: FirSimpleDiagnostic<*>): Array { + return arrayOf() + } } sealed class AbstractFirDiagnosticWithParametersRenderer>( diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticRenderer.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticRenderer.kt index 5e5fba8ff15..1d909f17f8b 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticRenderer.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/rendering/DiagnosticRenderer.kt @@ -9,4 +9,6 @@ import org.jetbrains.kotlin.diagnostics.UnboundDiagnostic interface DiagnosticRenderer { fun render(diagnostic: D): String + + fun renderParameters(diagnostic: D): Array } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/SimpleDiagnosticRenderer.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/SimpleDiagnosticRenderer.java index 8e4cc8bca74..3b68fd0dd62 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/SimpleDiagnosticRenderer.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/SimpleDiagnosticRenderer.java @@ -31,4 +31,10 @@ public class SimpleDiagnosticRenderer implements DiagnosticRenderer public String render(@NotNull Diagnostic diagnostic) { return message; } + + @NotNull + @Override + public Object[] renderParameters(@NotNull Diagnostic diagnostic) { + return new Object[0]; + } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/diagnosticsWithParameterRenderers.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/diagnosticsWithParameterRenderers.kt index 63478703e93..c0ee5866f8b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/diagnosticsWithParameterRenderers.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/diagnosticsWithParameterRenderers.kt @@ -27,11 +27,11 @@ abstract class AbstractDiagnosticWithParametersRenderer - + override fun renderParameters(diagnostic: D): Array { + return arrayOf() + } } - class DiagnosticWithParameters1Renderer( message: String, private val rendererForA: DiagnosticParameterRenderer? @@ -83,7 +83,7 @@ class DiagnosticWithParameters4Renderer( private val rendererForD: DiagnosticParameterRenderer?, ) : AbstractDiagnosticWithParametersRenderer>(message) { - override fun renderParameters(diagnostic: DiagnosticWithParameters4<*, A, B, C, D>): Array { + override fun renderParameters(diagnostic: DiagnosticWithParameters4<*, A, B, C, D>): Array { val context = RenderingContext.of(diagnostic.a, diagnostic.b, diagnostic.c, diagnostic.d) return arrayOf( renderParameter(diagnostic.a, rendererForA, context), diff --git a/compiler/testData/diagnostics/tests/regressions/kt251.fir.kt b/compiler/testData/diagnostics/tests/regressions/kt251.fir.kt index 7ba47dca1e8..a2e921aeb0c 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt251.fir.kt +++ b/compiler/testData/diagnostics/tests/regressions/kt251.fir.kt @@ -6,7 +6,7 @@ class A() { field = value } val y: Int - get(): String = "s" + get(): String = "s" val z: Int get() { return "s" diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticCodeMetaInfo.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticCodeMetaInfo.kt index cab0787fcd0..edc03a75d02 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticCodeMetaInfo.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/handlers/FirDiagnosticCodeMetaInfo.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.test.frontend.fir.handlers import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.codeMetaInfo.model.CodeMetaInfo import org.jetbrains.kotlin.codeMetaInfo.renderConfigurations.AbstractCodeMetaInfoRenderConfiguration +import org.jetbrains.kotlin.fir.analysis.diagnostics.AbstractFirDiagnosticWithParametersRenderer import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDefaultErrorMessages import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderer @@ -67,7 +68,9 @@ class FirDiagnosticCodeMetaRenderConfiguration( @Suppress("UNCHECKED_CAST") val renderer = FirDefaultErrorMessages.getRendererForDiagnostic(diagnostic) as FirDiagnosticRenderer> - params.add(renderer.render(diagnostic)) + if (renderer is AbstractFirDiagnosticWithParametersRenderer<*>) { + renderer.renderParameters(diagnostic).mapTo(params, Any?::toString) + } if (renderSeverity) params.add("severity='${diagnostic.severity}'")