diff options
Diffstat (limited to 'ast.c')
| -rw-r--r-- | ast.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -133,6 +133,17 @@ static void expr_destroy(struct expr_node* node) { } } +static void if_destroy(struct if_node* node) { + expr_destroy(node->cond); + free(node->cond); + stmt_destroy(node->true_branch); + free(node->true_branch); + if (node->false_branch != NULL) { + stmt_destroy(node->false_branch); + free(node->false_branch); + } +} + static void stmt_destroy(struct stmt_node* node) { switch (node->type) { case STMT_EMPTY: @@ -148,6 +159,10 @@ static void stmt_destroy(struct stmt_node* node) { break; case STMT_GROUP: group_destroy(&node->inner.group); + break; + case STMT_IF: + if_destroy(&node->inner.if_); + break; } } |
