aboutsummaryrefslogtreecommitdiff
path: root/typecheck.c
diff options
context:
space:
mode:
Diffstat (limited to 'typecheck.c')
-rw-r--r--typecheck.c10
1 files changed, 2 insertions, 8 deletions
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;