summaryrefslogtreecommitdiff
path: root/ast.c
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2026-03-27 10:30:10 -1000
committerCarson Fleming <cflems@cflems.net>2026-03-27 10:30:10 -1000
commitfca3bf239cfdf03c4479f5d0c14a21c1fd96ea3e (patch)
tree0618ad64a13e949ce9273098df724d8d25bdcb36 /ast.c
parent21f688c1eac5fb09ae68fd9b3cfcff687de36601 (diff)
downloadccc-fca3bf239cfdf03c4479f5d0c14a21c1fd96ea3e.tar.gz
woah we got variables
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;
}
}