summaryrefslogtreecommitdiff
path: root/ast.c
diff options
context:
space:
mode:
Diffstat (limited to 'ast.c')
-rw-r--r--ast.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ast.c b/ast.c
index ac95413..1334073 100644
--- a/ast.c
+++ b/ast.c
@@ -5,7 +5,7 @@ static void expr_destroy(struct expr_node* node);
static void stmt_destroy(struct stmt_node* node);
static void type_destroy(struct type_node* node) {
- free(node->type);
+ free(node->name);
}
static void var_decl_destroy(struct var_decl_node* node) {
@@ -14,6 +14,10 @@ static void var_decl_destroy(struct var_decl_node* node) {
free(node->ident);
}
+static void var_ref_destroy(struct var_ref_node* node) {
+ free(node->ident);
+}
+
static void group_destroy(struct group_node* node) {
struct stmt_node* body_node = node->body_head;
while (body_node != NULL) {
@@ -52,6 +56,9 @@ static void expr_destroy(struct expr_node* node) {
case EXPR_EMPTY:
case EXPR_INT_LIT:
break;
+ case EXPR_VAR_REF:
+ var_ref_destroy(&node->as._var_ref);
+ break;
}
}