diff --git a/compiler/cli/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension b/compiler/cli/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension index 5da1cf79980..a7a0ec33d13 100644 --- a/compiler/cli/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension +++ b/compiler/cli/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension @@ -1,5 +1,4 @@ # Note that this file is also present in idea/src/META-INF/services org.jetbrains.kotlin.resolve.jvm.diagnostics.DefaultErrorMessagesJvm org.jetbrains.kotlin.js.resolve.diagnostics.DefaultErrorMessagesJs -org.jetbrains.kotlin.fir.analysis.diagnostics.FirDefaultErrorMessages -org.jetbrains.kotlin.resolve.konan.diagnostics.DefaultErrorMessagesNative \ No newline at end of file +org.jetbrains.kotlin.resolve.konan.diagnostics.DefaultErrorMessagesNative diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt index 4f5a38b30a5..cc77a428f4c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/FirKotlinToJvmBytecodeCompiler.kt @@ -147,10 +147,11 @@ object FirKotlinToJvmBytecodeCompiler { firAnalyzerFacade.runResolution() val firDiagnostics = firAnalyzerFacade.runCheckers().values.flatten() - AnalyzerWithCompilerReport.reportDiagnostics( - SimpleGenericDiagnostics(firDiagnostics), - environment.messageCollector - ) + // TODO +// AnalyzerWithCompilerReport.reportDiagnostics( +// SimpleGenericDiagnostics(firDiagnostics), +// environment.messageCollector +// ) performanceManager?.notifyAnalysisFinished() if (syntaxErrors || firDiagnostics.any { it.severity == Severity.ERROR }) { 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 91f10dba8d7..0dd188a5529 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 @@ -377,11 +377,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.WRONG_SETTER_PARA import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.WRONG_SETTER_RETURN_TYPE @Suppress("unused") -class FirDefaultErrorMessages : DefaultErrorMessages.Extension { - override fun getMap(): DiagnosticFactoryToRendererMap { - return MAP.psiDiagnosticMap - } - +class FirDefaultErrorMessages { companion object { fun getRendererForDiagnostic(diagnostic: FirDiagnostic<*>): FirDiagnosticRenderer<*> { val factory = diagnostic.factory diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt index e0efef3834b..1bf8907bcb2 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnostic.kt @@ -8,25 +8,23 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile -import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Severity -import org.jetbrains.kotlin.diagnostics.UnboundDiagnostic import org.jetbrains.kotlin.fir.FirLightSourceElement import org.jetbrains.kotlin.fir.FirPsiSourceElement import org.jetbrains.kotlin.fir.FirSourceElement // ------------------------------ diagnostics ------------------------------ -sealed class FirDiagnostic : UnboundDiagnostic { +sealed class FirDiagnostic { abstract val element: E - abstract override val severity: Severity - abstract override val factory: AbstractFirDiagnosticFactory<*, *> + abstract val severity: Severity + abstract val factory: AbstractFirDiagnosticFactory<*, *> abstract val positioningStrategy: SourceElementPositioningStrategy<*> - override val textRanges: List + val textRanges: List get() = positioningStrategy.markDiagnostic(this) - override val isValid: Boolean + val isValid: Boolean get() = positioningStrategy.isValid(element) } @@ -62,13 +60,16 @@ sealed class FirDiagnosticWithParameters4 // ------------------------------ psi diagnostics ------------------------------ -interface FirPsiDiagnostic

: Diagnostic { +interface FirPsiDiagnostic

{ + val factory: AbstractFirDiagnosticFactory<*, P> val element: FirPsiSourceElement

+ val textRanges: List + val severity: Severity - override val psiElement: PsiElement + val psiElement: PsiElement get() = element.psi - override val psiFile: PsiFile + val psiFile: PsiFile get() = psiElement.containingFile } @@ -119,7 +120,7 @@ data class FirPsiDiagnosticWithParameters4

( // ------------------------------ light tree diagnostics ------------------------------ -interface FirLightDiagnostic : UnboundDiagnostic { +interface FirLightDiagnostic { val element: FirLightSourceElement } 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 0ebdd8edb9c..2858a1473da 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 @@ -1,16 +1,9 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - @file:Suppress("UNCHECKED_CAST") package org.jetbrains.kotlin.fir.analysis.diagnostics import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.Severity -import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticRenderer import org.jetbrains.kotlin.fir.FirLightSourceElement import org.jetbrains.kotlin.fir.FirPsiSourceElement import org.jetbrains.kotlin.fir.FirSourceElement @@ -19,16 +12,11 @@ import org.jetbrains.kotlin.fir.FirSourceElement annotation class InternalDiagnosticFactoryMethod sealed class AbstractFirDiagnosticFactory, P : PsiElement>( - override val name: String, - override val severity: Severity, + val name: String, + val severity: Severity, val defaultPositioningStrategy: SourceElementPositioningStrategy

, -) : DiagnosticFactory(name, severity) { +) { abstract val firRenderer: FirDiagnosticRenderer - - override var defaultRenderer: DiagnosticRenderer? - get() = firRenderer - set(_) { - } } class FirDiagnosticFactory0

( diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt index 7ec913c5e20..ef9745a9908 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDiagnosticFactoryToRendererMap.kt @@ -5,12 +5,10 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics -import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticParameterRenderer class FirDiagnosticFactoryToRendererMap(val name: String) { private val renderersMap: MutableMap, FirDiagnosticRenderer<*>> = mutableMapOf() - val psiDiagnosticMap: DiagnosticFactoryToRendererMap = DiagnosticFactoryToRendererMap() operator fun get(factory: AbstractFirDiagnosticFactory<*, *>): FirDiagnosticRenderer<*>? = renderersMap[factory] @@ -58,6 +56,5 @@ class FirDiagnosticFactoryToRendererMap(val name: String) { private fun put(factory: AbstractFirDiagnosticFactory<*, *>, renderer: FirDiagnosticRenderer<*>) { renderersMap[factory] = renderer - psiDiagnosticMap.put(factory, renderer) } } 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 0b66f31ac14..0042c6a07b0 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 @@ -6,11 +6,11 @@ package org.jetbrains.kotlin.fir.analysis.diagnostics import org.jetbrains.kotlin.diagnostics.rendering.* +import java.text.MessageFormat -interface FirDiagnosticRenderer> : DiagnosticRenderer { - override fun render(diagnostic: D): String - - override fun renderParameters(diagnostic: D): Array +sealed interface FirDiagnosticRenderer> { + fun render(diagnostic: D): String + fun renderParameters(diagnostic: D): Array } class SimpleFirDiagnosticRenderer(private val message: String) : FirDiagnosticRenderer> { @@ -19,13 +19,19 @@ class SimpleFirDiagnosticRenderer(private val message: String) : FirDiagnosticRe } override fun renderParameters(diagnostic: FirSimpleDiagnostic<*>): Array { - return arrayOf() + return emptyArray() } } sealed class AbstractFirDiagnosticWithParametersRenderer>( protected val message: String -) : FirDiagnosticRenderer, AbstractDiagnosticWithParametersRenderer(message) +) : FirDiagnosticRenderer { + private val messageFormat = MessageFormat(message) + + final override fun render(diagnostic: D): String { + return messageFormat.format(renderParameters(diagnostic)) + } +} class FirDiagnosticWithParameters1Renderer( message: String, diff --git a/idea/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension b/idea/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension index d40ff3ceb13..99ce03918a8 100644 --- a/idea/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension +++ b/idea/resources/META-INF/services/org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages$Extension @@ -1,5 +1,4 @@ # Note that this file is also present in compiler/cli/src/META-INF/services org.jetbrains.kotlin.resolve.jvm.diagnostics.DefaultErrorMessagesJvm org.jetbrains.kotlin.js.resolve.diagnostics.DefaultErrorMessagesJs -org.jetbrains.kotlin.fir.analysis.diagnostics.FirDefaultErrorMessages -org.jetbrains.kotlin.resolve.konan.diagnostics.DefaultErrorMessagesNative \ No newline at end of file +org.jetbrains.kotlin.resolve.konan.diagnostics.DefaultErrorMessagesNative