diff options
| author | Carson Fleming <cflems@cflems.net> | 2026-07-17 04:37:37 -0400 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2026-07-17 04:53:31 -0400 |
| commit | 99af8891f6672493939bf3b43084082884e28d04 (patch) | |
| tree | b1f94d8b78b96e0258bef9133ffa9c8faeb2e2b7 /parser.c | |
| parent | 82cf7004e351c9003af3019b2f7434ed8eeabf3e (diff) | |
| download | ccc-99af8891f6672493939bf3b43084082884e28d04.tar.gz | |
fix scope thing
Diffstat (limited to 'parser.c')
| -rw-r--r-- | parser.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -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) { |
