Open
Description
Describe the bug
Index 0 out of bounds for length 0
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.getElementDescriptor(PluginGeneratedSerialDescriptor.kt:135)
at kotlinx.serialization.descriptors.SerialDescriptorKt$elementDescriptors$1$1.next(SerialDescriptor.kt:284)
at kotlinx.serialization.descriptors.SerialDescriptorKt$elementDescriptors$1$1.next(SerialDescriptor.kt:279)
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptorKt.hashCodeImpl(PluginGeneratedSerialDescriptor.kt:137)
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor$_hashCode$2.invoke(PluginGeneratedSerialDescriptor.kt:44)
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor$_hashCode$2.invoke(PluginGeneratedSerialDescriptor.kt:44)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.get_hashCode(PluginGeneratedSerialDescriptor.kt:44)
at kotlinx.serialization.internal.PluginGeneratedSerialDescriptor.hashCode(PluginGeneratedSerialDescriptor.kt:97)
at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
at kotlinx.serialization.json.internal.DescriptorSchemaCache.get(SchemaCache.kt:35)
at kotlinx.serialization.json.internal.DescriptorSchemaCache.getOrPut(SchemaCache.kt:27)
at kotlinx.serialization.json.internal.JsonTreeDecoder.elementName(TreeJsonDecoder.kt:221)
at kotlinx.serialization.internal.NamedValueDecoder.getTag(Tagged.kt:330)
at kotlinx.serialization.json.internal.JsonTreeDecoder.decodeElementIndex(TreeJsonDecoder.kt:204)
at chat.quill.data.DefaultFoodContainerSerializer.deserialize(APIObjects.kt:40)
at chat.quill.data.DefaultFoodContainerSerializer.deserialize(APIObjects.kt:40)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:51)
at kotlinx.serialization.json.internal.TreeJsonDecoderKt.readJson(TreeJsonDecoder.kt:24)
at kotlinx.serialization.json.Json.decodeFromJsonElement(Json.kt:114)
at kotlinx.serialization.json.JsonTransformingSerializer.deserialize(JsonTransformingSerializer.kt:78)
at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63)
at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32)
at kotlinx.serialization.json.Json.decodeFromString(Json.kt:95)
at chat.quill.data.SerializationTest.container(SerializationTest.kt:27)
To Reproduce
Repro project: https://github.com/edenman/kmpPlayground
Here's the failing test: https://github.com/edenman/kmpPlayground/blob/master/shared/src/androidTest/kotlin/chat/quill/data/SerializationTest.kt#L26
Objects are defined here: https://github.com/edenman/kmpPlayground/blob/master/shared/src/commonMain/kotlin/chat/quill/data/APIObjects.kt
Custom serializer is here: https://github.com/edenman/kmpPlayground/blob/master/shared/src/commonMain/kotlin/chat/quill/data/OneOfSerializer.kt#L68
Expected behavior
No exception
Environment
- Kotlin version: 1.5.0
- Library version: 1.2.1
- Kotlin platforms: JVM
- Gradle version: 7.0
This serializer worked fine on serialization 1.0.1 + kotlin 1.4.30-M1