From 1e2bbe1fc5acb509c090d2d606374a26c58a4c3d Mon Sep 17 00:00:00 2001 From: sergeych Date: Fri, 5 Dec 2025 21:39:43 +0100 Subject: [PATCH] fix #79 enum toJson serialization --- .../kotlin/net/sergeych/lyng/obj/ObjEnum.kt | 6 ++++++ lynglib/src/commonTest/kotlin/ScriptTest.kt | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjEnum.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjEnum.kt index 4797b0e..2aed3d5 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjEnum.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/obj/ObjEnum.kt @@ -15,6 +15,8 @@ * */ +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive import net.sergeych.lyng.Scope import net.sergeych.lyng.obj.* import net.sergeych.lynon.LynonDecoder @@ -38,6 +40,10 @@ open class ObjEnumEntry(enumClass: ObjEnumClass, val name: ObjString, val ordina return ordinal.compareTo(scope, other.ordinal) } + override suspend fun toJson(scope: Scope): JsonElement { + return JsonPrimitive(name.value) + } + } object EnumBase : ObjClass("Enum") { diff --git a/lynglib/src/commonTest/kotlin/ScriptTest.kt b/lynglib/src/commonTest/kotlin/ScriptTest.kt index 989f640..e7577ef 100644 --- a/lynglib/src/commonTest/kotlin/ScriptTest.kt +++ b/lynglib/src/commonTest/kotlin/ScriptTest.kt @@ -3997,17 +3997,19 @@ class ScriptTest { } @Serializable - data class TestEnum( - val value: Int, - val inner: JsonObject - ) + enum class TestEnum { + One, Two + } + @Serializable + data class TestJson4(val value: TestEnum) + @Test fun deserializeEnumJsonTest() = runTest { val x = eval(""" import lyng.serialization - enum - { value: 12, inner: { "foo": 1, "bar": "two" }} - """.trimIndent()).decodeSerializable() - assertEquals(TestJson3(12, JsonObject(mapOf("foo" to JsonPrimitive(1), "bar" to Json.encodeToJsonElement("two")))), x) + enum TestEnum { One, Two } + { value: TestEnum.One } + """.trimIndent()).decodeSerializable() + assertEquals( TestJson4(TestEnum.One), x) } }