diff options
| author | gingerBill <bill@gingerbill.org> | 2021-11-07 14:16:13 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-11-07 14:16:13 +0000 |
| commit | e9c903f1ea480b9f873c81c4acc43fcb1e437d48 (patch) | |
| tree | 57e97c52d946fed4fc521d8d429228d584f390ca /core/encoding | |
| parent | 83be954efd2af0c7b706f935db5c72b80c49ff02 (diff) | |
| parent | f84bdee1ba8aa34db164f6b620c24b84ea62ec04 (diff) | |
Merge branch 'master' of https://github.com/odin-lang/Odin
Diffstat (limited to 'core/encoding')
| -rw-r--r-- | core/encoding/json/marshal.odin | 4 | ||||
| -rw-r--r-- | core/encoding/json/parser.odin | 7 |
2 files changed, 6 insertions, 5 deletions
diff --git a/core/encoding/json/marshal.odin b/core/encoding/json/marshal.odin index 0c95df924..adbcb95be 100644 --- a/core/encoding/json/marshal.odin +++ b/core/encoding/json/marshal.odin @@ -18,7 +18,7 @@ Marshal_Error :: union { marshal :: proc(v: any, allocator := context.allocator) -> (data: []byte, err: Marshal_Error) { b := strings.make_builder(allocator) - defer if err != nil || data == nil { + defer if err != .None { strings.destroy_builder(&b) } @@ -27,7 +27,7 @@ marshal :: proc(v: any, allocator := context.allocator) -> (data: []byte, err: M if len(b.buf) != 0 { data = b.buf[:] } - return + return data, .None } marshal_to_builder :: proc(b: ^strings.Builder, v: any) -> Marshal_Error { diff --git a/core/encoding/json/parser.odin b/core/encoding/json/parser.odin index af32e7266..c682ec9bd 100644 --- a/core/encoding/json/parser.odin +++ b/core/encoding/json/parser.odin @@ -106,6 +106,7 @@ parse_comma :: proc(p: ^Parser) -> (do_break: bool) { } parse_value :: proc(p: ^Parser) -> (value: Value, err: Error) { + err = .None token := p.curr_token #partial switch token.kind { case .Null: @@ -175,6 +176,7 @@ parse_value :: proc(p: ^Parser) -> (value: Value, err: Error) { } parse_array :: proc(p: ^Parser) -> (value: Value, err: Error) { + err = .None expect_token(p, .Open_Bracket) or_return array: Array @@ -266,15 +268,14 @@ parse_object_body :: proc(p: ^Parser, end_token: Token_Kind) -> (obj: Object, er break } } - return + return obj, .None } parse_object :: proc(p: ^Parser) -> (value: Value, err: Error) { expect_token(p, .Open_Brace) or_return obj := parse_object_body(p, .Close_Brace) or_return expect_token(p, .Close_Brace) or_return - value = obj - return + return obj, .None } |