summaryrefslogtreecommitdiff
path: root/formats/json
diff options
context:
space:
mode:
authorLeonid Startsev <sandwwraith@users.noreply.github.com>2023-03-29 18:18:54 +0200
committerGitHub <noreply@github.com>2023-03-29 18:18:54 +0200
commite2092a41693c79686e787ccd975579aabb0b2412 (patch)
treea89714176664159a1a686403eaab11c16e567c0f /formats/json
parent2b77da3b00138f7a79d31e0bb29aa60024fc8267 (diff)
downloadkotlinx.serialization-e2092a41693c79686e787ccd975579aabb0b2412.tar.gz
Get rid of deprecated toChar() in JS-specific code (#2252)
Apparently -Werror flag is not applied to JS sources in kotlin.js.compiler=both mode
Diffstat (limited to 'formats/json')
-rw-r--r--formats/json/jsMain/src/kotlinx/serialization/json/internal/DynamicDecoders.kt7
1 files changed, 6 insertions, 1 deletions
diff --git a/formats/json/jsMain/src/kotlinx/serialization/json/internal/DynamicDecoders.kt b/formats/json/jsMain/src/kotlinx/serialization/json/internal/DynamicDecoders.kt
index 1447881c..86c7a85c 100644
--- a/formats/json/jsMain/src/kotlinx/serialization/json/internal/DynamicDecoders.kt
+++ b/formats/json/jsMain/src/kotlinx/serialization/json/internal/DynamicDecoders.kt
@@ -134,7 +134,12 @@ private open class DynamicInput(
override fun decodeTaggedChar(tag: String): Char {
return when (val value = getByTag(tag)) {
is String -> if (value.length == 1) value[0] else throw SerializationException("$value can't be represented as Char")
- is Number -> value.toChar()
+ is Number -> {
+ val num = value as? Double ?: throw SerializationException("$value is not a Number")
+ val codePoint = toJavascriptLong(num)
+ if (codePoint < 0 || codePoint > Char.MAX_VALUE.code) throw SerializationException("$value can't be represented as Char because it's not in bounds of Char.MIN_VALUE..Char.MAX_VALUE")
+ codePoint.toInt().toChar()
+ }
else -> throw SerializationException("$value can't be represented as Char")
}
}