From 04ea51a81720be79170f185879a465e7020ed42b Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 24 Nov 2025 20:16:50 -0500 Subject: Fix case where a conditional failure was mistaken for an always failure --- src/typecheck.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/typecheck.c b/src/typecheck.c index 4e1f5554..b89f7eca 100644 --- a/src/typecheck.c +++ b/src/typecheck.c @@ -1402,7 +1402,10 @@ type_t *get_type(env_t *env, ast_t *ast) { type_t *true_t = get_type(truthy_scope, if_->body); ast_t *else_body = if_->else_body; - if (!else_body) else_body = WrapAST(ast, None, .type = true_t); + if (!else_body) { + if (true_t->tag == AbortType) return Type(VoidType); + else_body = WrapAST(ast, None, .type = true_t); + } type_t *false_t = get_type(falsey_scope, if_->else_body); type_t *t_either = type_or_type(true_t, false_t); if (!t_either) -- cgit v1.2.3