Files
kotlin-fork/plugins/kotlinx-serialization/testData/boxIr/userDefinedSerializerInCompanion.kt
T
Leonid Startsev fba2f5ea4e Expand most kotlinx.serialization tests on JS backend
to enhance and increase test coverage of the plugin.
2024-01-10 12:17:34 +00:00

36 lines
1.2 KiB
Kotlin
Vendored

// WITH_STDLIB
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.builtins.*
@Serializable
data class Main(val fields: MainFields) {
companion object {
fun fieldsSerializer(): KSerializer<MainFields> = MainFields.serializer()
}
}
@Serializable
data class MainFields(val firstName: String?)
@Serializable
data class Box<T>(val boxed: T) {
companion object {
fun <T> serializerLike(tSer: KSerializer<T>): KSerializer<List<Box<T>>> = ListSerializer(serializer(tSer))
}
}
fun box(): String {
if (Main.fieldsSerializer().descriptor.toString() != "MainFields(firstName: kotlin.String?)") return "Error1"
if (MainFields.serializer().descriptor.toString() != "MainFields(firstName: kotlin.String?)") return "Error2"
if (Main.serializer().descriptor.toString() != "Main(fields: MainFields)") return "Error3"
val boxListDesc = Box.serializerLike(String.serializer()).descriptor
if (boxListDesc.toString() != "kotlin.collections.ArrayList(Box(boxed: kotlin.String))") return boxListDesc.toString()
val boxDesc = Box.serializer(String.serializer()).descriptor
if (boxDesc.toString() != "Box(boxed: kotlin.String)") return boxDesc.toString()
return "OK"
}