summaryrefslogtreecommitdiff
path: root/formats/cbor/commonTest/src/kotlinx/serialization/PolymorphismTestData.kt
blob: 86aafe42d2e278b5a71a94f2db086e382faccd80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

package kotlinx.serialization

import kotlinx.serialization.modules.*
import kotlin.native.concurrent.*

@Serializable
abstract class SimpleAbstract

@Serializable
data class SimpleIntInheritor(val i: Int, val s: String) : SimpleAbstract()

@Serializable
data class SimpleStringInheritor(val s: String, val i: Int) : SimpleAbstract()

@Serializable
data class PolyBox(@Polymorphic val boxed: SimpleAbstract)

@SharedImmutable
val SimplePolymorphicModule = SerializersModule {
    polymorphic(SimpleAbstract::class) {
        subclass(SimpleIntInheritor.serializer())
        subclass(SimpleStringInheritor.serializer())
    }
}

@Serializable
sealed class SimpleSealed {
    @Serializable
    public data class SubSealedA(val s: String) : SimpleSealed()

    @Serializable
    public data class SubSealedB(val i: Int) : SimpleSealed()
}

@Serializable
data class SealedBox(val boxed: List<SimpleSealed>)