From 327d466b9543aee3983277ca4158e5b7aa06fdf8 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 12 Sep 2024 00:55:43 -0400 Subject: Table:get() now uses optional values instead of default or failure modes --- typecheck.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'typecheck.c') diff --git a/typecheck.c b/typecheck.c index b70db784..192a335b 100644 --- a/typecheck.c +++ b/typecheck.c @@ -832,14 +832,8 @@ type_t *get_type(env_t *env, ast_t *ast) auto table = Match(self_value_t, TableType); if (streq(call->name, "bump")) return Type(VoidType); else if (streq(call->name, "clear")) return Type(VoidType); - else if (streq(call->name, "get")) return table->value_type; - else if (streq(call->name, "get_or_null")) { - if (table->value_type->tag != PointerType) - code_err(ast, "The table method :get_or_null() is only supported for tables whose value type is a pointer, not %T", - table->value_type); - auto ptr = Match(table->value_type, PointerType); - return Type(OptionalType, .type=Type(PointerType, .pointed=ptr->pointed, .is_stack=ptr->is_stack, .is_readonly=ptr->is_readonly)); - } else if (streq(call->name, "has")) return Type(BoolType); + else if (streq(call->name, "get")) return Type(OptionalType, .type=table->value_type); + else if (streq(call->name, "has")) return Type(BoolType); else if (streq(call->name, "remove")) return Type(VoidType); else if (streq(call->name, "set")) return Type(VoidType); else if (streq(call->name, "sorted")) return self_value_t; -- cgit v1.2.3