diff options
| author | Michael Kutowski <skytrias@protonmail.com> | 2022-09-30 19:40:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-30 19:40:41 +0200 |
| commit | f65bdf5733e43ab5a5c849af4664a58b707272b0 (patch) | |
| tree | ca4a6c0188c0bb2a50587f276c0bd30a2447f7e6 /core/encoding | |
| parent | 213d930f8cb8f4604f1f9063f2c6e39c0bc38ccc (diff) | |
else statement to allow skipping unused struct fields
Diffstat (limited to 'core/encoding')
| -rw-r--r-- | core/encoding/json/unmarshal.odin | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin index 062649b58..19288a294 100644 --- a/core/encoding/json/unmarshal.odin +++ b/core/encoding/json/unmarshal.odin @@ -384,16 +384,14 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm break struct_loop } continue struct_loop + } else { + // allows skipping unused struct fields + parse_value(p) or_return + if parse_comma(p) { + break struct_loop + } + continue struct_loop } - - // NOTE(bill, 2022-09-14): Previously this would not be allowed - // {"foo": 123, "bar": 456} - // T :: struct{foo: int} - // `T` is missing the `bar` field - // The line below is commented out to ignore fields in an object which - // do not have a corresponding target field - // - // return Unsupported_Type_Error{v.id, p.curr_token} } case reflect.Type_Info_Map: |