Enable FIR plugin in SerializationComponentRegistrar

so real projects can be built with K2 and serialization.

Correctly register renderer for serialization plugin errors.
This commit is contained in:
Leonid Startsev
2022-11-15 19:18:31 +01:00
committed by Space Team
parent 702d0b4d54
commit 56cd150554
4 changed files with 13 additions and 9 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlinx.serialization.compiler.fir.checkers
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.diagnostics.*
import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
@@ -47,4 +48,8 @@ object FirSerializationErrors {
val EXTERNAL_CLASS_NOT_SERIALIZABLE by error2<PsiElement, FirClassSymbol<*>, ConeKotlinType>()
val EXTERNAL_CLASS_IN_ANOTHER_MODULE by error2<PsiElement, FirClassSymbol<*>, ConeKotlinType>()
init {
RootDiagnosticRendererFactory.registerFactory(KtDefaultErrorMessagesSerialization)
}
}
@@ -8,16 +8,12 @@ package org.jetbrains.kotlinx.serialization.compiler.fir.checkers
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
import org.jetbrains.kotlin.diagnostics.KtDiagnosticFactoryToRendererMap
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderer
import org.jetbrains.kotlin.diagnostics.rendering.BaseDiagnosticRendererFactory
import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers
object KtDefaultErrorMessagesSerialization {
fun getRendererForDiagnostic(diagnostic: KtDiagnostic): KtDiagnosticRenderer {
val factory = diagnostic.factory
return MAP[factory] ?: factory.ktRenderer
}
val MAP = KtDiagnosticFactoryToRendererMap("Serialization").apply {
object KtDefaultErrorMessagesSerialization : BaseDiagnosticRendererFactory() {
override val MAP = KtDiagnosticFactoryToRendererMap("Serialization").apply {
put(
FirSerializationErrors.INLINE_CLASSES_NOT_SUPPORTED,
"Inline classes require runtime serialization library version at least {0}, while your classpath has {1}.",