@@ -2,7 +2,10 @@ package com.eignex.kencode
22
33import kotlinx.serialization.DeserializationStrategy
44import kotlinx.serialization.ExperimentalSerializationApi
5- import kotlinx.serialization.descriptors.*
5+ import kotlinx.serialization.descriptors.PolymorphicKind
6+ import kotlinx.serialization.descriptors.PrimitiveKind
7+ import kotlinx.serialization.descriptors.SerialDescriptor
8+ import kotlinx.serialization.descriptors.StructureKind
69import kotlinx.serialization.encoding.CompositeDecoder
710import kotlinx.serialization.encoding.Decoder
811import kotlinx.serialization.modules.EmptySerializersModule
@@ -334,8 +337,9 @@ class PackedDecoder internal constructor(
334337
335338 val kind = deserializer.descriptor.kind
336339 val isInline = deserializer.descriptor.isInline
340+ val isStructural = kind is StructureKind || kind is PolymorphicKind
337341
338- if (isNullableCollection && deserializer.descriptor.isNullable && ! isInline && (kind is StructureKind || kind is PolymorphicKind ) ) {
342+ if (isNullableCollection && deserializer.descriptor.isNullable && ! isInline && isStructural ) {
339343 val isNotNull = decodeNotNullMark()
340344 if (! isNotNull) {
341345 currentIndex = - 1
@@ -351,7 +355,7 @@ class PackedDecoder internal constructor(
351355 return value
352356 }
353357
354- if (! isInline && (kind is StructureKind || kind is PolymorphicKind ) ) {
358+ if (! isInline && isStructural ) {
355359 // Share the HeaderContext only when the current decoder is in merged mode
356360 // and the child is a non-nullable, non-inline CLASS/OBJECT in a non-collection context.
357361 val shouldShareCtx = shouldMergeChildCtx(
0 commit comments