Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import kotlinx.rpc.descriptor.RpcTypeKrpc
import kotlinx.rpc.internal.rpcInternalKClass
import kotlinx.rpc.internal.utils.InternalRpcApi
import kotlinx.serialization.*
import kotlinx.serialization.builtins.nullable
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
import kotlinx.serialization.encoding.*
Expand All @@ -29,7 +30,7 @@ internal fun SerializersModule.buildContextualInternal(type: KType): KSerializer
)

@Suppress("UNCHECKED_CAST")
return result as? KSerializer<Any?>
return if (type.isMarkedNullable) result?.nullable else result as? KSerializer<Any?>
}

private fun SerializersModule.buildContextual(type: KType): KSerializer<Any?> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ interface KrpcTestService {
suspend fun nonSerializableClassWithSerializer(
localDateTime: @Serializable(LocalDateTimeSerializer::class) LocalDateTime,
): @Serializable(LocalDateTimeSerializer::class) LocalDateTime
suspend fun nullableNonSerializableClass(localDate: LocalDate?): LocalDate?

suspend fun incomingStreamSyncCollect(arg1: Flow<String>): Int
suspend fun incomingStreamSyncCollectMultiple(arg1: Flow<String>, arg2: Flow<String>, arg3: Flow<String>): Int
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ class KrpcTestServiceBackend : KrpcTestService {
)
}

override suspend fun nullableNonSerializableClass(localDate: LocalDate?): LocalDate? {
return localDate?.let { LocalDate(it.year, it.month, it.day + 1) }
}

override suspend fun incomingStreamSyncCollect(arg1: Flow<String>): Int {
return arg1.count()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,16 @@ abstract class KrpcTransportTestBase {
)
}

@Test
open fun nullableNonSerializableParameter() = runTest {
val localDate = LocalDate(2001, 8, 23)
val resultDate = client.nonSerializableClass(localDate)
assertEquals(LocalDate(2001, 8, 24), resultDate)

val resultNull = client.nullableNonSerializableClass(null)
assertNull(resultNull)
}

@Test
fun doubleGenericReturnType() = runTest {
val result = client.doubleGenericReturnType()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ class ProtoBufLocalTransportTest : LocalTransportTest() {
@Test
override fun nullableReturn(): TestResult = runTest { }

@Test
override fun nullableNonSerializableParameter(): TestResult = runTest { }

@Test
override fun testByteArraySerialization(): TestResult = runTest { }

Expand Down