aboutsummaryrefslogtreecommitdiff
path: root/typecheck.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-02-17 20:47:43 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-02-17 20:47:43 -0500
commit26723deea26f76670f8de07702b3be221d8503fa (patch)
treed807ebe5c3bafc85268502bb2859f93980af64dd /typecheck.c
parent6fcc7840d1d46e45579045e3452f0e884576a31b (diff)
Incremental fixes
Diffstat (limited to 'typecheck.c')
-rw-r--r--typecheck.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/typecheck.c b/typecheck.c
index 33e2b122..37a222fe 100644
--- a/typecheck.c
+++ b/typecheck.c
@@ -102,6 +102,13 @@ void bind_statement(env_t *env, ast_t *statement)
set_binding(env, Match(decl->var, Var)->name, new(binding_t, .type=type));
break;
}
+ case StructDef: {
+ auto def = Match(statement, StructDef);
+ type_t *type = Table_str_get(env->types, def->name);
+ type_t *constructor_t = Type(FunctionType, .args=Match(type, StructType)->fields, .ret=type);
+ set_binding(env, def->name, new(binding_t, .type=constructor_t));
+ break;
+ }
default: break;
}
}