From 99af8891f6672493939bf3b43084082884e28d04 Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Fri, 17 Jul 2026 04:37:37 -0400 Subject: fix scope thing --- parser.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'parser.c') diff --git a/parser.c b/parser.c index 42a7f49..e078ae9 100644 --- a/parser.c +++ b/parser.c @@ -268,7 +268,11 @@ static void parse_var_decl(struct var_decl_node* p_node) { parse_type(&p_node->type); expect(TK_IDENT); p_node->ident = tok.data.ident; - scope_define_var(scope, (struct var_def) { .name = p_node->ident }); + scope_define_var(scope, (struct var_def) { + .name = p_node->ident, + .loc.type = STO_UNRESOLVED, + .sz = 0, /* unknown */ + }); } static void parse_stmt(struct stmt_node* p_node); @@ -389,10 +393,7 @@ static void parse_fn_decl(struct fn_decl_node* p_node) { expect(TK_RPAREN); - parse_group(&p_node->body); - - scope_pop(&scope); - + /* defining here makes recursion possible */ scope_define_var(scope, (struct var_def) { .name = p_node->name, .loc = { @@ -400,6 +401,10 @@ static void parse_fn_decl(struct fn_decl_node* p_node) { .decl = p_node, }, }); + + parse_group(&p_node->body); + + scope_pop(&scope); } static bool parse_root(struct root_node* p_node) { -- cgit v1.2.3