mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
else statement to allow skipping unused struct fields
This commit is contained in:
@@ -380,20 +380,18 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm
|
|||||||
field := any{field_ptr, type.id}
|
field := any{field_ptr, type.id}
|
||||||
unmarshal_value(p, field) or_return
|
unmarshal_value(p, field) or_return
|
||||||
|
|
||||||
|
if parse_comma(p) {
|
||||||
|
break struct_loop
|
||||||
|
}
|
||||||
|
continue struct_loop
|
||||||
|
} else {
|
||||||
|
// allows skipping unused struct fields
|
||||||
|
parse_value(p) or_return
|
||||||
if parse_comma(p) {
|
if parse_comma(p) {
|
||||||
break struct_loop
|
break struct_loop
|
||||||
}
|
}
|
||||||
continue 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:
|
case reflect.Type_Info_Map:
|
||||||
|
|||||||
Reference in New Issue
Block a user