diff options
author | Bad Diode <bd@badd10de.dev> | 2022-04-11 18:39:27 -0300 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2022-04-11 18:39:27 -0300 |
commit | 140cd959daabf5c18b9cccc210a58ab50351e884 (patch) | |
tree | ff8480fc271d520463f8be4a344f63fb037fffed /src/viz.c | |
parent | ab3e064c6f90ec94daad99b5a4c56e0abbcc79bb (diff) | |
download | bdl-140cd959daabf5c18b9cccc210a58ab50351e884.tar.gz bdl-140cd959daabf5c18b9cccc210a58ab50351e884.zip |
Add funcall node type and fix type resolution bugs
Diffstat (limited to 'src/viz.c')
-rw-r--r-- | src/viz.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -10,6 +10,7 @@ static const char* node_str[] = { | |||
10 | [NODE_FUN] = "FUN", | 10 | [NODE_FUN] = "FUN", |
11 | [NODE_BLOCK] = "BLOCK", | 11 | [NODE_BLOCK] = "BLOCK", |
12 | [NODE_IF] = "IF", | 12 | [NODE_IF] = "IF", |
13 | [NODE_FUNCALL] = "FUNCALL", | ||
13 | }; | 14 | }; |
14 | 15 | ||
15 | void | 16 | void |
@@ -135,6 +136,18 @@ viz_node(Node *node) { | |||
135 | viz_node(node->fun.body); | 136 | viz_node(node->fun.body); |
136 | printf("%zu:bod:e->%zu:top:w;\n", node->id, node->fun.body->id); | 137 | printf("%zu:bod:e->%zu:top:w;\n", node->id, node->fun.body->id); |
137 | } break; | 138 | } break; |
139 | case NODE_FUNCALL: { | ||
140 | printf(" | Name: "); | ||
141 | sv_write(&node->funcall.name->string); | ||
142 | printf(" | <args> Args: "); | ||
143 | printf("\"];\n"); | ||
144 | size_t n_args = array_size(node->funcall.args); | ||
145 | for (size_t i = 0; i < n_args; ++i) { | ||
146 | viz_node(node->funcall.args[i]); | ||
147 | printf("%zu:args:e->%zu:top:w;\n", node->id, | ||
148 | node->funcall.args[i]->id); | ||
149 | } | ||
150 | } break; | ||
138 | } | 151 | } |
139 | } | 152 | } |
140 | 153 | ||