From e495c35ad7d06b5c8db2fcc56dadc8dcdd92a810 Mon Sep 17 00:00:00 2001 From: Leonid Startsev Date: Wed, 11 Mar 2020 15:52:44 +0300 Subject: [PATCH] Use upper bound as a type for polymorphic serializer when it is used in sealed class case Fixes https://github.com/Kotlin/kotlinx.serialization/issues/753 --- .../serialization/compiler/backend/ir/GeneratorHelpers.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt index 5c11bcba3b2..e0f3bda6d8d 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/ir/GeneratorHelpers.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.typeUtil.isTypeParameter import org.jetbrains.kotlin.types.typeUtil.makeNotNullable +import org.jetbrains.kotlin.types.typeUtil.representativeUpperBound import org.jetbrains.kotlinx.serialization.compiler.backend.common.AbstractSerialGenerator import org.jetbrains.kotlinx.serialization.compiler.backend.common.allSealedSerializableSubclassesFor import org.jetbrains.kotlinx.serialization.compiler.backend.common.findTypeSerializerOrContext @@ -607,7 +608,7 @@ interface IrBuilderExtension { SpecialBuiltins.polymorphicSerializer ), module, - genericType + (genericType.constructor.declarationDescriptor as TypeParameterDescriptor).representativeUpperBound )!! }!! wrapWithNullableSerializerIfNeeded(module, type, expr, nullableSerClass)