Improve reflect.Type_Info_Complex support

This commit is contained in:
gingerBill
2021-09-29 15:08:45 +01:00
parent 9d797ea225
commit 19ac822e4a

View File

@@ -467,7 +467,6 @@ unmarsal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unma
}
return nil
case:
return UNSUPPORTED_TYPE
}
@@ -560,6 +559,21 @@ unmarsal_array :: proc(p: ^Parser, v: any) -> (err: Unmarshal_Error) {
}
return assign_array(p, v.data, t.elem, length)
case reflect.Type_Info_Complex:
// NOTE(bill): Allow lengths which are less than the dst array
if int(length) > 2 {
return UNSUPPORTED_TYPE
}
switch ti.id {
case complex32: return assign_array(p, v.data, type_info_of(f16), 2)
case complex64: return assign_array(p, v.data, type_info_of(f32), 2)
case complex128: return assign_array(p, v.data, type_info_of(f64), 2)
}
return UNSUPPORTED_TYPE
}
return UNSUPPORTED_TYPE