Skip to content

Commit 2f88ae4

Browse files
sandwwraithSpace Team
authored andcommitted
[kx.serialization] Test for KT-76949
1 parent c1c6ab6 commit 2f88ae4

9 files changed

+101
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// WITH_STDLIB
2+
3+
import kotlinx.serialization.*
4+
import kotlinx.serialization.encoding.*
5+
import kotlinx.serialization.descriptors.*
6+
import kotlinx.serialization.json.*
7+
8+
class AnyMapSerializer: KSerializer<Map<String, Any?>> {
9+
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("AnyMap", PrimitiveKind.STRING)
10+
override fun serialize(encoder: Encoder, value: Map<String, Any?>) = encoder.encodeString(value.toString())
11+
override fun deserialize(decoder: Decoder): Map<String, Any?> {
12+
return emptyMap()
13+
}
14+
}
15+
16+
class AnyListSerializer: KSerializer<List<Any?>> {
17+
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("AnyList", PrimitiveKind.STRING)
18+
override fun serialize(encoder: Encoder, value: List<Any?>) = encoder.encodeString(value.toString())
19+
override fun deserialize(decoder: Decoder): List<Any?> {
20+
return emptyList()
21+
}
22+
}
23+
24+
class NonSerializable
25+
26+
class Box<T>
27+
28+
class BoxSerializerArgless(): KSerializer<Box<Any>> {
29+
override val descriptor: SerialDescriptor
30+
get() = PrimitiveSerialDescriptor("BoxSerializerArgless", PrimitiveKind.STRING)
31+
32+
override fun serialize(encoder: Encoder, value: Box<Any>) = TODO()
33+
34+
override fun deserialize(decoder: Decoder): Box<Any> = TODO()
35+
}
36+
37+
@Serializable
38+
data class Test(
39+
@Serializable(with = AnyMapSerializer::class)
40+
var map: Map<String, Any>?,
41+
@Serializable(with = AnyListSerializer::class)
42+
val testList: List<Any?>,
43+
@Serializable(with = BoxSerializerArgless::class)
44+
val box: Box<NonSerializable>
45+
)
46+
47+
fun box(): String {
48+
val desc = Test.serializer().descriptor
49+
if (desc.getElementDescriptor(0).serialName != "AnyMap?") return "Fail MAP"
50+
if (desc.getElementDescriptor(1).serialName != "AnyList") return "Fail LIST"
51+
if (desc.getElementDescriptor(2).serialName != "BoxSerializerArgless") return "Fail BOX"
52+
return "OK"
53+
}

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/SerializationNativeTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/SerializationNativeWithInlinedFunInKlibTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/LLReversedSerializationBlackBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/LLSerializationBlackBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationFirLightTreeBlackBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationIrBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationJsBoxTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/kotlinx-serialization/tests-gen/org/jetbrains/kotlinx/serialization/runners/SerializationJsBoxWithInlinedFunInKlibTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)