aboutsummaryrefslogtreecommitdiff
path: root/core/encoding
diff options
context:
space:
mode:
authorMichael Kutowski <skytrias@protonmail.com>2022-09-30 19:40:41 +0200
committerGitHub <noreply@github.com>2022-09-30 19:40:41 +0200
commitf65bdf5733e43ab5a5c849af4664a58b707272b0 (patch)
treeca4a6c0188c0bb2a50587f276c0bd30a2447f7e6 /core/encoding
parent213d930f8cb8f4604f1f9063f2c6e39c0bc38ccc (diff)
else statement to allow skipping unused struct fields
Diffstat (limited to 'core/encoding')
-rw-r--r--core/encoding/json/unmarshal.odin16
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: