Files
kotlin-fork/plugins/kotlin-serialization/kotlin-serialization-compiler/testData/codegen/Sealed.kt
T
Leonid Startsev de128a5406 kotlinx.serialization: Support @Serializable on sealed interfaces.
Interfaces (regular and sealed) are by default polymorphic. To benefit
from sealing (i.e. knowledge of all inheritors in compile-time), @Serializable
annotation may be added on sealed interface, generating the same serializer
that can be used for sealed classes.

Synthetic nested classes are not generated in DEFAULT_IMPLS mode because
it causes problems when adding a synthetic companion to an interface.

Fixes https://github.com/Kotlin/kotlinx.serialization/issues/1576
2021-12-01 14:14:47 +00:00

19 lines
485 B
Kotlin
Vendored

// CURIOUS_ABOUT deserialize, write$Self, childSerializers, <init>, <clinit>, invoke, serializer
// WITH_STDLIB
import kotlinx.serialization.*
@Serializable
sealed interface X {
fun def() {}
}
// do not forget to update this test with custom serialinfo annotation when serialization 1.3.0 is released
@Serializable
sealed class Result: X {
@Serializable class OK(val s: String): Result()
@Serializable object Err: Result()
}
@Serializable
class Container(val r: Result)