aboutsummaryrefslogtreecommitdiff
path: root/core/encoding/json
diff options
context:
space:
mode:
authordozn <andymrsimmons@gmail.com>2025-12-30 18:10:07 -0800
committerdozn <andymrsimmons@gmail.com>2025-12-30 18:10:07 -0800
commit8fea2b783c8f35dc6cd5963a2ed30cb176cc9889 (patch)
treef49cbcca76ee898d2e2e641a7733c1a5856d2bb1 /core/encoding/json
parent589dbbddd20f444786e1d71258faf2f692450c49 (diff)
[encoding/json] Allow Unmarshalling to `rune`
Fixes https://github.com/odin-lang/Odin/issues/6061
Diffstat (limited to 'core/encoding/json')
-rw-r--r--core/encoding/json/types.odin1
-rw-r--r--core/encoding/json/unmarshal.odin9
2 files changed, 10 insertions, 0 deletions
diff --git a/core/encoding/json/types.odin b/core/encoding/json/types.odin
index 1da17a0db..77cc7db85 100644
--- a/core/encoding/json/types.odin
+++ b/core/encoding/json/types.odin
@@ -76,6 +76,7 @@ Error :: enum {
Invalid_Number,
String_Not_Terminated,
Invalid_String,
+ Invalid_Rune,
// Parsing Errors
diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin
index 3cdc6429d..58365b684 100644
--- a/core/encoding/json/unmarshal.odin
+++ b/core/encoding/json/unmarshal.odin
@@ -225,6 +225,15 @@ unmarshal_string_token :: proc(p: ^Parser, val: any, token: Token, ti: ^reflect.
}
ok = true
return
+ case rune:
+ for rne, i in str {
+ if i > 0 {
+ dst = {}
+ return false, .Invalid_Rune
+ }
+ dst = rne
+ }
+ return true, nil
}
#partial switch variant in ti.variant {