From d8ad0ec43a9303d816d05b8d6bc6e656a1f6e02c Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Wed, 9 Oct 2019 16:34:35 +0300 Subject: [PATCH] Do not add synthetic deserialization constructor if .deserialize method is customized Otherwise, there was an added descriptor without generated IR on Native --- .../compiler/extensions/SerializationResolveExtension.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationResolveExtension.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationResolveExtension.kt index a48b960c0eb..2c218b038b1 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationResolveExtension.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/extensions/SerializationResolveExtension.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension import org.jetbrains.kotlin.resolve.lazy.LazyClassContext import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider import org.jetbrains.kotlin.types.KotlinType +import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializerCodegen import org.jetbrains.kotlinx.serialization.compiler.resolve.* import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationAnnotations.serialInfoFqName import java.util.* @@ -78,6 +79,8 @@ open class SerializationResolveExtension : SyntheticResolveExtension { result: MutableCollection ) { if (thisDescriptor.isInternalSerializable) { + // do not add synthetic deserialization constructor if .deserialize method is customized + if (thisDescriptor.hasCompanionObjectAsSerializer && SerializerCodegen.getSyntheticLoadMember(thisDescriptor.companionObjectDescriptor!!) == null) return result.add(KSerializerDescriptorResolver.createLoadConstructorDescriptor(thisDescriptor, bindingContext)) } }