aboutsummaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ast.c b/src/ast.c
index 28bb98e..da51b05 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -46,6 +46,13 @@ void free_statement(struct Statement* statement)
free_statement(&statement->branch.else_body[i]);
free(statement->branch.else_body);
break;
+ case STATEMENT_WHILE:
+ free_expr(statement->loop.left);
+ free_expr(statement->loop.right);
+ for (size_t i = 0; i < statement->loop.body_count; i += 1)
+ free_statement(&statement->loop.body[i]);
+ free(statement->loop.body);
+ break;
case STATEMENT_CALL:
for (size_t i = 0; i < statement->call.arg_count; i += 1)
free_expr(statement->call.args[i]);