Fix multiple serialization plugin problems
Do not use fallback serializer if it is the same (fixes https://github.com/Kotlin/kotlinx.serialization/issues/957). Use correct number of serializable KClasses when creating sealed class serializer (fixes https://github.com/Kotlin/kotlinx.serialization/issues/925).
This commit is contained in:
+3
-1
@@ -87,7 +87,9 @@ fun AbstractSerialGenerator.allSealedSerializableSubclassesFor(
|
||||
}
|
||||
|
||||
val serializableSubtypes = recursiveSealed(klass).map { it.toSimpleType() }
|
||||
return serializableSubtypes to serializableSubtypes.mapNotNull { findTypeSerializerOrContextUnchecked(module, it) }
|
||||
return serializableSubtypes.mapNotNull { subtype ->
|
||||
findTypeSerializerOrContextUnchecked(module, subtype)?.let { Pair(subtype, it) }
|
||||
}.unzip()
|
||||
}
|
||||
|
||||
fun KotlinType.serialName(): String {
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ internal fun AbstractSerialGenerator.stackValueSerializerInstance(codegen: Class
|
||||
if (serializer.classId == contextSerializerId && serializer.constructors.any { it.valueParameters.size == 3 }) {
|
||||
// append new additional arguments
|
||||
val fallbackDefaultSerializer = findTypeSerializer(module, kType)
|
||||
if (fallbackDefaultSerializer != null) {
|
||||
if (fallbackDefaultSerializer != null && fallbackDefaultSerializer != serializer) {
|
||||
instantiate(kType to fallbackDefaultSerializer, writeSignature = false)
|
||||
} else {
|
||||
aconst(null)
|
||||
|
||||
Reference in New Issue
Block a user