diff options
| author | dozn <andymrsimmons@gmail.com> | 2025-12-30 18:10:07 -0800 |
|---|---|---|
| committer | dozn <andymrsimmons@gmail.com> | 2025-12-30 18:10:07 -0800 |
| commit | 8fea2b783c8f35dc6cd5963a2ed30cb176cc9889 (patch) | |
| tree | f49cbcca76ee898d2e2e641a7733c1a5856d2bb1 | |
| parent | 589dbbddd20f444786e1d71258faf2f692450c49 (diff) | |
[encoding/json] Allow Unmarshalling to `rune`
Fixes https://github.com/odin-lang/Odin/issues/6061
| -rw-r--r-- | core/encoding/json/types.odin | 1 | ||||
| -rw-r--r-- | core/encoding/json/unmarshal.odin | 9 |
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 { |