aboutsummaryrefslogtreecommitdiff
path: root/src/compile/expressions.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-11-22 19:11:55 -0500
committerBruce Hill <bruce@bruce-hill.com>2025-11-22 21:47:43 -0500
commitbb354d6d3626cdc0c2a1b802a954df244cd1facc (patch)
tree31c5c8c3f21db8706e1fc7f78194500e03d1780e /src/compile/expressions.c
parent0aeacfbd83b0afe8a8ea654bc1554b8d7d29e9b1 (diff)
Fixes for conditional expressions for optional types
Diffstat (limited to 'src/compile/expressions.c')
-rw-r--r--src/compile/expressions.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compile/expressions.c b/src/compile/expressions.c
index 108bda80..130a267c 100644
--- a/src/compile/expressions.c
+++ b/src/compile/expressions.c
@@ -66,7 +66,9 @@ Text_t compile_empty(type_t *t) {
Text_t compile(env_t *env, ast_t *ast) {
switch (ast->tag) {
case None: {
- code_err(ast, "I can't figure out what this `none`'s type is!");
+ type_t *type = Match(ast, None)->type;
+ if (type == NULL) code_err(ast, "I can't figure out what this `none`'s type is!");
+ return compile_none(non_optional(type));
}
case Bool: return Match(ast, Bool)->b ? Text("yes") : Text("no");
case Var: {