summaryrefslogtreecommitdiff
path: root/parser.c
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2026-07-17 17:54:49 -0700
committerCarson Fleming <cflems@cflems.net>2026-07-17 17:54:49 -0700
commitbfb8020c1a64f505537163caa465bd7f06e43f18 (patch)
tree9f19ecac81d9617a109b158a27dda4e2b964cd3e /parser.c
parentcd1a01e2cf02ad556900219e561ebb64619fc6a5 (diff)
downloadccc-bfb8020c1a64f505537163caa465bd7f06e43f18.tar.gz
functional type checker
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/parser.c b/parser.c
index a213ee4..0d403a6 100644
--- a/parser.c
+++ b/parser.c
@@ -138,7 +138,6 @@ static void parse_expr_assign(struct expr_node* p_node) {
expect(TK_ASSIGN);
parse_expr(p_node->inner.assign.rval);
- p_node->resolved_type = p_node->inner.assign.rval->resolved_type;
}
static void parse_args_eval(struct args_eval_node** pp_arg) {
@@ -158,12 +157,11 @@ static void parse_expr_call(struct expr_node* p_node) {
switch (p_node->type) {
case EXPR_VAR_REF:
struct var_def* var_def = p_node->inner.var_ref.def_ref;
- /* TODO: I would like to include functions in the resolved_type rather than checking storage */
+ /* TODO: I would like to include functions in the type model rather than checking storage */
if (var_def->loc.type != STO_FN)
PARSER_PANIC("called object is not a function");
p_node->inner.call.called_fn_ref = var_def->loc.decl;
- p_node->resolved_type = var_def->loc.decl->return_type.def_ref;
break;
default:
PARSER_PANIC("expression is not callable");
@@ -252,8 +250,6 @@ static void parse_expr(struct expr_node* p_node) {
case TK_IDENT:
p_node->type = EXPR_VAR_REF;
parse_var_ref(&p_node->inner.var_ref);
- p_node->resolved_type =
- p_node->inner.var_ref.def_ref->resolved_type;
break;
default:
PARSER_PANIC("expected expression");
@@ -284,7 +280,6 @@ static void parse_var_decl(struct var_decl_node* p_node) {
p_node->def_ref = scope_define_var(scope, (struct var_def) {
.name = tok.data.ident,
.loc.type = STO_UNRESOLVED,
- .resolved_type = p_node->type.def_ref,
});
if (p_node->def_ref == NULL)
PARSER_PANIC("redefinition of '%s'", tok.data.ident);