aboutsummaryrefslogtreecommitdiff
path: root/types.c
diff options
context:
space:
mode:
Diffstat (limited to 'types.c')
-rw-r--r--types.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/types.c b/types.c
index f666f667..cd388304 100644
--- a/types.c
+++ b/types.c
@@ -595,14 +595,16 @@ type_t *get_field_type(type_t *t, const char *field_name)
return NULL;
}
case SetType: {
- if (streq(field_name, "items"))
+ if (streq(field_name, "length"))
+ return INT_TYPE;
+ else if (streq(field_name, "items"))
return Type(ArrayType, .item_type=Match(t, SetType)->item_type);
- else if (streq(field_name, "fallback"))
- return Type(PointerType, .pointed=t, .is_readonly=true, .is_optional=true);
return NULL;
}
case TableType: {
- if (streq(field_name, "keys"))
+ if (streq(field_name, "length"))
+ return INT_TYPE;
+ else 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);
@@ -612,6 +614,14 @@ type_t *get_field_type(type_t *t, const char *field_name)
return Type(PointerType, .pointed=t, .is_readonly=true, .is_optional=true);
return NULL;
}
+ case ArrayType: {
+ if (streq(field_name, "length")) return INT_TYPE;
+ return NULL;
+ }
+ case ChannelType: {
+ if (streq(field_name, "max_size")) return INT_TYPE;
+ return NULL;
+ }
default: return NULL;
}
}