diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt index 706810159fe..7ca96e6f58d 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/resolve/SerializableProperty.kt @@ -19,17 +19,26 @@ package org.jetbrains.kotlinx.serialization.compiler.resolve import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor +import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.psi.ValueArgument import org.jetbrains.kotlin.resolve.descriptorUtil.module +import org.jetbrains.kotlin.types.KotlinType class SerializableProperty(val descriptor: PropertyDescriptor, val isConstructorParameterWithDefault: Boolean) { val name = descriptor.annotations.serialNameValue ?: descriptor.name.asString() val type = descriptor.type val genericIndex = type.genericIndex val module = descriptor.module - val serializableWith = descriptor.annotations.serializableWith?.let { checkSerializerNullability(type, it) } + val serializableWith = extractSerializableWith(descriptor.annotations) val optional = descriptor.annotations.serialOptional val transient = descriptor.annotations.serialTransient val annotationsWithArguments: List, List>> = descriptor.annotationsWithArguments() + + private fun extractSerializableWith(annotations: Annotations): KotlinType? { + annotations.serializableWith?.let { return it } + if (annotations.hasAnnotation(SerializationAnnotations.contextualFqName)) + return module.getClassFromSerializationPackage(SpecialBuiltins.contextSerializer).defaultType + return null + } }