Allow json to unmarshal empty struct.

This commit is contained in:
Jeroen van Rijn
2024-07-21 00:37:11 +02:00
parent 572b400d8e
commit fc5ce30f34
2 changed files with 19 additions and 2 deletions

View File

@@ -363,8 +363,7 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm
}
v := v
v = reflect.any_base(v)
ti := type_info_of(v.id)
ti := reflect.type_info_base(type_info_of(v.id))
#partial switch t in ti.variant {
case reflect.Type_Info_Struct:

View File

@@ -349,6 +349,24 @@ unmarshal_json :: proc(t: ^testing.T) {
}
}
@test
unmarshal_empty_struct :: proc(t: ^testing.T) {
TestStruct :: struct {}
test := make(map[string]TestStruct)
input: = `{
"test_1": {},
"test_2": {}
}`
err := json.unmarshal(transmute([]u8)input, &test)
defer {
for k in test {
delete(k)
}
delete(test)
}
testing.expect(t, err == nil, "Expected empty struct to unmarshal without error")
}
@test
surrogate :: proc(t: ^testing.T) {
input := `+ + * 😃 - /`