From 398d2cab6988e20c59e7037ff7ef551540339abb Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 5 Oct 2025 17:52:33 -0400 Subject: Fix a bunch of issues with optional types --- src/typecheck.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/typecheck.c') diff --git a/src/typecheck.c b/src/typecheck.c index b21fa40f..906236c3 100644 --- a/src/typecheck.c +++ b/src/typecheck.c @@ -1067,7 +1067,10 @@ type_t *get_type(env_t *env, ast_t *ast) { } case Return: { ast_t *val = Match(ast, Return)->value; - if (env->fn) env = with_enum_scope(env, get_function_return_type(env, env->fn)); + if (env->fn && (env->fn->tag != Lambda || Match(env->fn, Lambda)->ret_type != NULL)) { + type_t *ret_type = get_function_return_type(env, env->fn); + env = with_enum_scope(env, ret_type); + } return Type(ReturnType, .ret = (val ? get_type(env, val) : Type(VoidType))); } case Stop: -- cgit v1.2.3