FIR Parcelize: register the error message factory

This commit is contained in:
pyos
2022-10-18 10:49:53 +02:00
committed by Dmitriy Novozhilov
parent 8c1ff1c9ae
commit b23de16b06
2 changed files with 11 additions and 11 deletions
@@ -16,11 +16,11 @@
package org.jetbrains.kotlin.parcelize.fir.diagnostics
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.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_TYPE
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_CLASS_OR_OBJECT
import org.jetbrains.kotlin.fir.analysis.diagnostics.checkMissingMessages
import org.jetbrains.kotlin.parcelize.fir.diagnostics.KtErrorsParcelize.CLASS_SHOULD_BE_PARCELIZE
import org.jetbrains.kotlin.parcelize.fir.diagnostics.KtErrorsParcelize.CREATOR_DEFINITION_IS_NOT_ALLOWED
import org.jetbrains.kotlin.parcelize.fir.diagnostics.KtErrorsParcelize.DEPRECATED_ANNOTATION
@@ -46,13 +46,8 @@ import org.jetbrains.kotlin.parcelize.fir.diagnostics.KtErrorsParcelize.PARCELER
import org.jetbrains.kotlin.parcelize.fir.diagnostics.KtErrorsParcelize.PROPERTY_WONT_BE_SERIALIZED
import org.jetbrains.kotlin.parcelize.fir.diagnostics.KtErrorsParcelize.REDUNDANT_TYPE_PARCELER
object KtDefaultErrorMessagesParcelize {
fun getRendererForDiagnostic(diagnostic: KtDiagnostic): KtDiagnosticRenderer {
val factory = diagnostic.factory
return MAP[factory] ?: factory.ktRenderer
}
val MAP = KtDiagnosticFactoryToRendererMap("Parcelize").also { map ->
object KtDefaultErrorMessagesParcelize : BaseDiagnosticRendererFactory() {
override val MAP = KtDiagnosticFactoryToRendererMap("Parcelize").also { map ->
map.put(
PARCELABLE_SHOULD_BE_CLASS,
"'Parcelable' should be a class"
@@ -176,5 +171,7 @@ object KtDefaultErrorMessagesParcelize {
DEPRECATED_PARCELER,
"'kotlinx.android.parcel.Parceler' is deprecated. Use 'kotlinx.parcelize.Parceler' instead"
)
map.checkMissingMessages(KtErrorsParcelize)
}
}
@@ -22,10 +22,9 @@ import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies.DELEG
import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies.INNER_MODIFIER
import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies.NAME_IDENTIFIER
import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies.OVERRIDE_MODIFIER
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
import org.jetbrains.kotlin.psi.KtClassOrObject
object KtErrorsParcelize {
val PARCELABLE_SHOULD_BE_CLASS by error0<PsiElement>(NAME_IDENTIFIER)
@@ -52,4 +51,8 @@ object KtErrorsParcelize {
val DEPRECATED_PARCELER by error0<PsiElement>()
val INAPPLICABLE_IGNORED_ON_PARCEL by warning0<PsiElement>()
val INAPPLICABLE_IGNORED_ON_PARCEL_CONSTRUCTOR_PROPERTY by warning0<PsiElement>()
init {
RootDiagnosticRendererFactory.registerFactory(KtDefaultErrorMessagesParcelize)
}
}