kotlinx.serialization icon indicating copy to clipboard operation
kotlinx.serialization copied to clipboard

Errors in generating an external serializer for a parameterized serializable class

Open shanshin opened this issue 1 year ago • 0 comments

When trying to execute such code

@Serializer(forClass = Data::class)
class MySerializer(val serializer: KSerializer<Any>)

@Serializable(MySerializer::class)
class Data<T: Any>(val t: T)
...
  Json.encodeToString(Data(1))

an runtime error occurs

Exception in thread "main" java.lang.NullPointerException: Parameter specified as non-null is null: method kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement, parameter serializer
	at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt)
	at MySerializer.serialize(Main.kt:15)
	at MySerializer.serialize(Main.kt:15)
	at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:228)
	at kotlinx.serialization.json.internal.JsonStreamsKt.encodeByWriter(JsonStreams.kt:28)
	at kotlinx.serialization.json.Json.encodeToString(Json.kt:81)
	at MainKt.main(Main.kt:21)
	at MainKt.main(Main.kt)

However, the code works fine if you rename the serializer property to typeSerial0

shanshin avatar Jan 12 '24 16:01 shanshin