diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/AbstractSerialGenerator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/AbstractSerialGenerator.kt index fd123b97a8e..b44546be349 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/AbstractSerialGenerator.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/AbstractSerialGenerator.kt @@ -38,12 +38,12 @@ abstract class AbstractSerialGenerator(val bindingContext: BindingContext, val c ).toSet() } - val additionalSerializersInScopeOfCurrentFile: Map by lazy { + val additionalSerializersInScopeOfCurrentFile: Map by lazy { getKClassListFromFileAnnotation(SerializationAnnotations.additionalSerializersFqName, currentDeclaration) .associateBy( { - it.supertypes().find(::isKSerializer)?.arguments?.firstOrNull()?.type - ?: throw AssertionError("Argument for ${SerializationAnnotations.additionalSerializersFqName} does not implement KSerializer") + it.supertypes().find(::isKSerializer)?.arguments?.firstOrNull()?.type.toClassDescriptor + ?: throw AssertionError("Argument for ${SerializationAnnotations.additionalSerializersFqName} does not implement KSerializer or does not provide serializer for concrete type") }, { it.toClassDescriptor!! } ) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt index cb19d4bef34..2fc7c073251 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/common/TypeUtil.kt @@ -46,7 +46,7 @@ open class SerialTypeInfo( ) fun AbstractSerialGenerator.findAddOnSerializer(propertyType: KotlinType, module: ModuleDescriptor): ClassDescriptor? { - additionalSerializersInScopeOfCurrentFile[propertyType]?.let { return it } + additionalSerializersInScopeOfCurrentFile[propertyType.toClassDescriptor]?.let { return it } if (propertyType in contextualKClassListInCurrentFile) return module.getClassFromSerializationPackage(SpecialBuiltins.contextSerializer) if (propertyType.toClassDescriptor?.annotations?.hasAnnotation(SerializationAnnotations.polymorphicFqName) == true) @@ -136,7 +136,7 @@ fun AbstractSerialGenerator.findTypeSerializerOrContextUnchecked( if (kType.isTypeParameter()) return null if (kType.isMarkedNullable) return findTypeSerializerOrContextUnchecked(module, kType.makeNotNullable()) annotations.serializableWith(module)?.let { return it.toClassDescriptor } - additionalSerializersInScopeOfCurrentFile[kType]?.let { return it } + additionalSerializersInScopeOfCurrentFile[kType.toClassDescriptor]?.let { return it } if (kType in contextualKClassListInCurrentFile) return module.getClassFromSerializationPackage(SpecialBuiltins.contextSerializer) return analyzeSpecialSerializers(module, annotations) ?: findTypeSerializer(module, kType) }