diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-02-25 14:35:25 -0500 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-02-25 14:35:25 -0500 |
| commit | d06c63c70c67af6db46cd2a1e3ed002e4b280a8b (patch) | |
| tree | 5e6eca9c2f42b4b9a00037e216cdd79033db5b32 /types.c | |
| parent | 5344789d8aed3beef2cdeaf2678cff554e29456a (diff) | |
Table field access for .keys, .values, .default, .fallback
Diffstat (limited to 'types.c')
| -rw-r--r-- | types.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -524,18 +524,15 @@ type_t *get_field_type(type_t *t, const char *field_name) } return NULL; } - case ArrayType: { - if (streq(field_name, "length")) - return Type(IntType, .bits=64); - return NULL; - } case TableType: { - if (streq(field_name, "length")) - return Type(IntType, .bits=64); - else if (streq(field_name, "keys")) + if (streq(field_name, "keys")) return Type(ArrayType, Match(t, TableType)->key_type); else if (streq(field_name, "values")) return Type(ArrayType, Match(t, TableType)->value_type); + else if (streq(field_name, "default")) + return Type(PointerType, .pointed=Match(t, TableType)->value_type, .is_readonly=true, .is_optional=true); + else if (streq(field_name, "fallback")) + return Type(PointerType, .pointed=t, .is_readonly=true, .is_optional=true); return NULL; } default: return NULL; |
