From d06c63c70c67af6db46cd2a1e3ed002e4b280a8b Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 25 Feb 2024 14:35:25 -0500 Subject: Table field access for .keys, .values, .default, .fallback --- types.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'types.c') diff --git a/types.c b/types.c index 1fd671f1..5e37536b 100644 --- a/types.c +++ b/types.c @@ -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; -- cgit v1.2.3