summaryrefslogtreecommitdiff
path: root/src/codegen/codegen_decl.c
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 12:20:33 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-25 12:20:33 +0000
commiteae6d2a789f6538806a3859a144e99558d3e6caf (patch)
tree1ba0f696c17879af7bec8e017ff1c1c81439d791 /src/codegen/codegen_decl.c
parent2dc5214fd8bb6a1168e2f2b643a36043c36c908a (diff)
Further fix for #121
Diffstat (limited to 'src/codegen/codegen_decl.c')
-rw-r--r--src/codegen/codegen_decl.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/codegen/codegen_decl.c b/src/codegen/codegen_decl.c
index b82e1af..d525963 100644
--- a/src/codegen/codegen_decl.c
+++ b/src/codegen/codegen_decl.c
@@ -991,7 +991,14 @@ int emit_tests_and_runner(ParserContext *ctx, ASTNode *node, FILE *out)
if (cur->type == NODE_TEST)
{
fprintf(out, "static void _z_test_%d() {\n", test_count);
+ int saved = defer_count;
codegen_walker(ctx, cur->test_stmt.body, out);
+ // Run defers
+ for (int i = defer_count - 1; i >= saved; i--)
+ {
+ codegen_node_single(ctx, defer_stack[i], out);
+ }
+ defer_count = saved;
fprintf(out, "}\n");
test_count++;
}