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:
committed by
Space Team
parent
702d0b4d54
commit
56cd150554
+5
-1
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
|
|||||||
import org.jetbrains.kotlin.container.useInstance
|
import org.jetbrains.kotlin.container.useInstance
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
||||||
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
|
||||||
import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension
|
import org.jetbrains.kotlin.js.translate.extensions.JsSyntheticTranslateExtension
|
||||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol
|
||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
||||||
@@ -23,6 +24,7 @@ import org.jetbrains.kotlin.serialization.DescriptorSerializerPlugin
|
|||||||
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
|
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.diagnostic.SerializationPluginDeclarationChecker
|
import org.jetbrains.kotlinx.serialization.compiler.diagnostic.SerializationPluginDeclarationChecker
|
||||||
import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationConfigurationKeys.DISABLE_INTRINSIC
|
import org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationConfigurationKeys.DISABLE_INTRINSIC
|
||||||
|
import org.jetbrains.kotlinx.serialization.compiler.fir.FirSerializationExtensionRegistrar
|
||||||
|
|
||||||
object SerializationConfigurationKeys {
|
object SerializationConfigurationKeys {
|
||||||
val DISABLE_INTRINSIC: CompilerConfigurationKey<Boolean> =
|
val DISABLE_INTRINSIC: CompilerConfigurationKey<Boolean> =
|
||||||
@@ -57,7 +59,7 @@ class SerializationComponentRegistrar : CompilerPluginRegistrar() {
|
|||||||
if (configuration.get(DISABLE_INTRINSIC) == true) SerializationIntrinsicsState.DISABLED else SerializationIntrinsicsState.NORMAL
|
if (configuration.get(DISABLE_INTRINSIC) == true) SerializationIntrinsicsState.DISABLED else SerializationIntrinsicsState.NORMAL
|
||||||
|
|
||||||
override val supportsK2: Boolean
|
override val supportsK2: Boolean
|
||||||
get() = false
|
get() = true
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun registerExtensions(extensionStorage: ExtensionStorage, intrinsicsState: SerializationIntrinsicsState = SerializationIntrinsicsState.NORMAL) = with(extensionStorage) {
|
fun registerExtensions(extensionStorage: ExtensionStorage, intrinsicsState: SerializationIntrinsicsState = SerializationIntrinsicsState.NORMAL) = with(extensionStorage) {
|
||||||
@@ -76,6 +78,8 @@ class SerializationComponentRegistrar : CompilerPluginRegistrar() {
|
|||||||
IrGenerationExtension.registerExtension(SerializationLoweringExtension(serializationDescriptorSerializer, intrinsicsState))
|
IrGenerationExtension.registerExtension(SerializationLoweringExtension(serializationDescriptorSerializer, intrinsicsState))
|
||||||
|
|
||||||
StorageComponentContainerContributor.registerExtension(SerializationPluginComponentContainerContributor())
|
StorageComponentContainerContributor.registerExtension(SerializationPluginComponentContainerContributor())
|
||||||
|
|
||||||
|
FirExtensionRegistrarAdapter.registerExtension(FirSerializationExtensionRegistrar())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun registerProtoExtensions() {
|
private fun registerProtoExtensions() {
|
||||||
|
|||||||
+5
@@ -7,6 +7,7 @@ package org.jetbrains.kotlinx.serialization.compiler.fir.checkers
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.diagnostics.*
|
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.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
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_NOT_SERIALIZABLE by error2<PsiElement, FirClassSymbol<*>, ConeKotlinType>()
|
||||||
val EXTERNAL_CLASS_IN_ANOTHER_MODULE by error2<PsiElement, FirClassSymbol<*>, ConeKotlinType>()
|
val EXTERNAL_CLASS_IN_ANOTHER_MODULE by error2<PsiElement, FirClassSymbol<*>, ConeKotlinType>()
|
||||||
|
|
||||||
|
init {
|
||||||
|
RootDiagnosticRendererFactory.registerFactory(KtDefaultErrorMessagesSerialization)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-7
@@ -8,16 +8,12 @@ package org.jetbrains.kotlinx.serialization.compiler.fir.checkers
|
|||||||
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
|
import org.jetbrains.kotlin.diagnostics.KtDiagnostic
|
||||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticFactoryToRendererMap
|
import org.jetbrains.kotlin.diagnostics.KtDiagnosticFactoryToRendererMap
|
||||||
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderer
|
import org.jetbrains.kotlin.diagnostics.KtDiagnosticRenderer
|
||||||
|
import org.jetbrains.kotlin.diagnostics.rendering.BaseDiagnosticRendererFactory
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
|
import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers
|
||||||
|
|
||||||
object KtDefaultErrorMessagesSerialization {
|
object KtDefaultErrorMessagesSerialization : BaseDiagnosticRendererFactory() {
|
||||||
fun getRendererForDiagnostic(diagnostic: KtDiagnostic): KtDiagnosticRenderer {
|
override val MAP = KtDiagnosticFactoryToRendererMap("Serialization").apply {
|
||||||
val factory = diagnostic.factory
|
|
||||||
return MAP[factory] ?: factory.ktRenderer
|
|
||||||
}
|
|
||||||
|
|
||||||
val MAP = KtDiagnosticFactoryToRendererMap("Serialization").apply {
|
|
||||||
put(
|
put(
|
||||||
FirSerializationErrors.INLINE_CLASSES_NOT_SUPPORTED,
|
FirSerializationErrors.INLINE_CLASSES_NOT_SUPPORTED,
|
||||||
"Inline classes require runtime serialization library version at least {0}, while your classpath has {1}.",
|
"Inline classes require runtime serialization library version at least {0}, while your classpath has {1}.",
|
||||||
|
|||||||
-1
@@ -36,7 +36,6 @@ class SerializationEnvironmentConfigurator(
|
|||||||
configuration: CompilerConfiguration
|
configuration: CompilerConfiguration
|
||||||
) {
|
) {
|
||||||
SerializationComponentRegistrar.registerExtensions(this, SerializationIntrinsicsState.FORCE_ENABLED)
|
SerializationComponentRegistrar.registerExtensions(this, SerializationIntrinsicsState.FORCE_ENABLED)
|
||||||
FirExtensionRegistrarAdapter.registerExtension(FirSerializationExtensionRegistrar())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user