diff options
author | Bad Diode <bd@badd10de.dev> | 2024-06-21 13:04:49 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2024-06-21 13:04:49 +0200 |
commit | eea63b71c0a21287c78c456b9674400d0bb45fc2 (patch) | |
tree | 9b35ec21837462e49e05ac01f3638632b5c682b8 /src/main.c | |
parent | d7fce26ee176c3b62c769b26781edf39105cf8d1 (diff) | |
download | bdl-eea63b71c0a21287c78c456b9674400d0bb45fc2.tar.gz bdl-eea63b71c0a21287c78c456b9674400d0bb45fc2.zip |
Add scope pointer to AST nodes
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -86,7 +86,7 @@ analyzer_symbols(Analyzer *a, Node *node, Scope *scope) { | |||
86 | if (!node) { | 86 | if (!node) { |
87 | return; | 87 | return; |
88 | } | 88 | } |
89 | assert(node); | 89 | node->scope = scope; |
90 | switch (node->kind) { | 90 | switch (node->kind) { |
91 | case NODE_FUN: { | 91 | case NODE_FUN: { |
92 | if (scope->depth != 0) { | 92 | if (scope->depth != 0) { |
@@ -104,6 +104,7 @@ analyzer_symbols(Analyzer *a, Node *node, Scope *scope) { | |||
104 | } | 104 | } |
105 | 105 | ||
106 | scope = scope_alloc(a, scope); | 106 | scope = scope_alloc(a, scope); |
107 | node->scope = scope; | ||
107 | for (sz i = 0; i < array_size(node->func_params); i++) { | 108 | for (sz i = 0; i < array_size(node->func_params); i++) { |
108 | Node *param = node->func_params[i]; | 109 | Node *param = node->func_params[i]; |
109 | symmap_insert(&scope->symbols, param->param_name->value.str, | 110 | symmap_insert(&scope->symbols, param->param_name->value.str, |
@@ -143,6 +144,7 @@ analyzer_symbols(Analyzer *a, Node *node, Scope *scope) { | |||
143 | // case NODE_STRUCT_LIT: | 144 | // case NODE_STRUCT_LIT: |
144 | case NODE_BLOCK: { | 145 | case NODE_BLOCK: { |
145 | Scope *next = scope_alloc(a, scope); | 146 | Scope *next = scope_alloc(a, scope); |
147 | node->scope = scope; | ||
146 | for (sz i = 0; i < array_size(node->elements); i++) { | 148 | for (sz i = 0; i < array_size(node->elements); i++) { |
147 | Node *expr = node->elements[i]; | 149 | Node *expr = node->elements[i]; |
148 | analyzer_symbols(a, expr, next); | 150 | analyzer_symbols(a, expr, next); |