Added saving SerialInfo annotations to the enum class

Resolves Kotlin/kotlinx.serialization#2121

Merge-request: KT-MR-8019
Merged-by: Sergey Shanshin <Sergey.Shanshin@jetbrains.com>
This commit is contained in:
Sergey.Shanshin
2022-12-18 19:22:16 +00:00
committed by Space Team
parent 88d140527f
commit 5e01669e23
9 changed files with 66 additions and 32 deletions
@@ -49,11 +49,11 @@ class SerializationFirResolveExtension(session: FirSession) : FirDeclarationGene
SerializationPackages.internalPackageFqName,
SerialEntityNames.ENUM_SERIALIZER_FACTORY_FUNC_NAME
).isNotEmpty()
val hasMarkedFactory = session.symbolProvider.getTopLevelCallableSymbols(
val hasAnnotatedFactory = session.symbolProvider.getTopLevelCallableSymbols(
SerializationPackages.internalPackageFqName,
SerialEntityNames.MARKED_ENUM_SERIALIZER_FACTORY_FUNC_NAME
SerialEntityNames.ANNOTATED_ENUM_SERIALIZER_FACTORY_FUNC_NAME
).isNotEmpty()
hasFactory && hasMarkedFactory
hasFactory && hasAnnotatedFactory
}
override fun getNestedClassifiersNames(classSymbol: FirClassSymbol<*>): Set<Name> {
@@ -15,8 +15,8 @@ import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.ANNOTATED_ENUM_SERIALIZER_FACTORY_FUNC_NAME
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.ENUM_SERIALIZER_FACTORY_FUNC_NAME
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerialEntityNames.MARKED_ENUM_SERIALIZER_FACTORY_FUNC_NAME
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationPackages
class DependencySerializationInfoProvider(session: FirSession) : FirExtensionSessionComponent(session) {
@@ -24,10 +24,10 @@ class DependencySerializationInfoProvider(session: FirSession) : FirExtensionSes
val enumSerializerFactory = session.symbolProvider
.getTopLevelFunctionSymbols(SerializationPackages.internalPackageFqName, ENUM_SERIALIZER_FACTORY_FUNC_NAME)
val markedEnumSerializerFactory = session.symbolProvider
.getTopLevelFunctionSymbols(SerializationPackages.internalPackageFqName, MARKED_ENUM_SERIALIZER_FACTORY_FUNC_NAME)
val annotatedEnumSerializerFactory = session.symbolProvider
.getTopLevelFunctionSymbols(SerializationPackages.internalPackageFqName, ANNOTATED_ENUM_SERIALIZER_FACTORY_FUNC_NAME)
enumSerializerFactory.isEmpty() || markedEnumSerializerFactory.isEmpty()
enumSerializerFactory.isEmpty() || annotatedEnumSerializerFactory.isEmpty()
}
private val classesFromSerializationPackageCache: FirCache<Name, FirClassSymbol<*>, Nothing?> = session.firCachesFactory.createCache { name ->