diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-05-12 15:18:46 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-05-12 15:18:46 -0400 |
| commit | 4dbe046866a6280cf304c7e0ec6471d872bc8e27 (patch) | |
| tree | 293b94a73769a8fd10cdc5135a3af8da82c4d334 /types.c | |
| parent | 8ada56c4248e9e09b8f151e9d516739dd86ad520 (diff) | |
Add interface fields
Diffstat (limited to 'types.c')
| -rw-r--r-- | types.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -479,6 +479,8 @@ type_t *get_field_type(type_t *t, const char *field_name) { t = value_type(t); switch (t->tag) { + case PointerType: + return get_field_type(Match(t, PointerType)->pointed, field_name); case StructType: { auto struct_t = Match(t, StructType); for (arg_t *field = struct_t->fields; field; field = field->next) { @@ -490,8 +492,11 @@ type_t *get_field_type(type_t *t, const char *field_name) case InterfaceType: { auto interface = Match(t, InterfaceType); for (arg_t *field = interface->fields; field; field = field->next) { - if (streq(field->name, field_name)) + if (streq(field->name, field_name)) { + if (field->type->tag == PointerType) + return Match(field->type, PointerType)->pointed; return field->type; + } } return NULL; } |
