Yakiv Yereskovskyi
07/11/2025, 12:49 PM0.4.0
to 0.8.1
and it looks like new version doesn’t serialize default arguments anymore, I’m just getting NPE:
Caused by: java.lang.NullPointerException: Parameter specified as non-null is null
...
at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:259)
at kotlinx.serialization.encoding.AbstractEncoder.encodeSerializableElement(AbstractEncoder.kt:80)
at kotlinx.rpc.krpc.internal.CallableParametersSerializer.serialize(SerializationUtils.kt:127)
at kotlinx.rpc.krpc.internal.CallableParametersSerializer.serialize(SerializationUtils.kt:100)
at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:259)
at kotlinx.serialization.json.internal.JsonStreamsKt.encodeByWriter(JsonStreams.kt:99)
Could you help to understand if this is regression or I did something wrong?Yakiv Yereskovskyi
07/11/2025, 1:01 PMcreatedAtFrom: Instant? = null,
but it calls our custom KSerializer<Instant>
with null, it doesn’t handle nullability properlyYakiv Yereskovskyi
07/11/2025, 1:02 PMYakiv Yereskovskyi
07/11/2025, 1:07 PMoverride fun serialize(
encoder: Encoder,
value: Array<Any?>,
) {
encoder.encodeStructure(descriptor) {
for (i in callable.parameters.indices) {
encodeSerializableElement(descriptor, i, callableSerializers[i], value[i])
}
}
}
be encodeNullableSerializableElement
?Yakiv Yereskovskyi
07/11/2025, 1:11 PMcallableSerializers
actually have nullable serializers for common types like StringYakiv Yereskovskyi
07/11/2025, 1:18 PMinternal fun SerializersModule.buildContextualInternal(type: KType): KSerializer<Any?>? {
val result = getContextual(
kClass = type.rpcInternalKClass(),
typeArgumentsSerializers = type.arguments.mapIndexed { i, typeArgument ->
val typeArg = typeArgument.type
?: error("Unexpected star projection type at index $i in type arguments list of '$type'")
buildContextualInternal(typeArg) ?: serializer(typeArg)
}
)
@Suppress("UNCHECKED_CAST")
return result as? KSerializer<Any?>
}
probably we need to mark KSerializer nullable if KType is nullableYakiv Yereskovskyi
07/11/2025, 2:21 PMAlexander Sysoev
07/11/2025, 4:00 PMYakiv Yereskovskyi
07/15/2025, 1:01 PMAlexander Sysoev
07/15/2025, 1:02 PMYakiv Yereskovskyi
07/15/2025, 1:04 PMYakiv Yereskovskyi
07/15/2025, 1:04 PMAlexander Sysoev
07/15/2025, 1:05 PMAlexander Sysoev
07/18/2025, 10:08 AMYakiv Yereskovskyi
07/18/2025, 11:01 AM