diff options
author | Leonid Startsev <sandwwraith@users.noreply.github.com> | 2022-11-29 18:08:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-29 20:08:32 +0300 |
commit | ccf9c2c52cd9df10e3782f9f8a02ff4172c4b868 (patch) | |
tree | 92361c4cf20fe43d926675aa91b5f7dcfa7a3f6d /formats/json-tests | |
parent | 02f643c05a37675f2ff4ea7c9b0a37ea48483ae9 (diff) | |
download | kotlinx.serialization-ccf9c2c52cd9df10e3782f9f8a02ff4172c4b868.tar.gz |
Correctly handle situation where different serializers can be provided (#2113)
for the same KClass in SealedClassSerializer.
Previous fix supported only equal serializers.
Fixes #2110
Fixes #1937
Diffstat (limited to 'formats/json-tests')
-rw-r--r-- | formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt b/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt index 4d19c279..6ba4713b 100644 --- a/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt +++ b/formats/json-tests/commonTest/src/kotlinx/serialization/features/sealed/SealedDiamondTest.kt @@ -20,10 +20,19 @@ class SealedDiamondTest : JsonTestBase() { @SerialName("X") data class X(val i: Int) : B, C + @Serializable + @SerialName("Y") + object Y : B, C + + @SerialName("E") + enum class E : B, C { + Q, W + } + @Test fun testMultipleSuperSealedInterfacesDescriptor() { val subclasses = A.serializer().descriptor.getElementDescriptor(1).elementDescriptors.map { it.serialName } - assertEquals(listOf("X"), subclasses) + assertEquals(listOf("E", "X", "Y"), subclasses) } @Test @@ -32,8 +41,8 @@ class SealedDiamondTest : JsonTestBase() { data class Carrier(val a: A, val b: B, val c: C) assertJsonFormAndRestored( Carrier.serializer(), - Carrier(X(1), X(2), X(3)), - """{"a":{"type":"X","i":1},"b":{"type":"X","i":2},"c":{"type":"X","i":3}}""" + Carrier(X(1), X(2), Y), + """{"a":{"type":"X","i":1},"b":{"type":"X","i":2},"c":{"type":"Y"}}""" ) } |