aboutsummaryrefslogtreecommitdiff
path: root/src/typecheck.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-04-05 01:07:09 -0400
committerBruce Hill <bruce@bruce-hill.com>2025-04-05 01:07:09 -0400
commit316eff8b4f6c4f0c119360dfbb94aa0840a7e65a (patch)
tree06d2ba0a53874b1b34bf495ce1010ed60547054c /src/typecheck.c
parent355ad9532163f9513c01aa59333aed5363386022 (diff)
Fix up more things
Diffstat (limited to 'src/typecheck.c')
-rw-r--r--src/typecheck.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/typecheck.c b/src/typecheck.c
index e4176508..4341748b 100644
--- a/src/typecheck.c
+++ b/src/typecheck.c
@@ -108,12 +108,13 @@ type_t *parse_type_ast(env_t *env, type_ast_t *ast)
arg_t *type_args = NULL;
for (arg_ast_t *arg = fn->args; arg; arg = arg->next) {
type_args = new(arg_t, .name=arg->name, .next=type_args);
- if (arg->type) {
+ if (arg->type)
type_args->type = parse_type_ast(env, arg->type);
- } else {
- type_args->default_val = arg->value;
+ else if (arg->value)
type_args->type = get_type(env, arg->value);
- }
+
+ if (arg->value)
+ type_args->default_val = arg->value;
}
REVERSE_LIST(type_args);
return Type(ClosureType, Type(FunctionType, .args=type_args, .ret=ret_t));