summaryrefslogtreecommitdiff
path: root/src/ast.c
diff options
context:
space:
mode:
authorCarlos Maniero <carlosmaniero@gmail.com>2023-04-29 15:55:39 -0300
committerCarlos Maniero <carlosmaniero@gmail.com>2023-04-29 19:02:38 -0300
commit9f034b4ebfe15844ea610ec2dd2fca1a9f7ce338 (patch)
treebb415654b8af0dac33fdce6537f0ab32234c3a20 /src/ast.c
parent817fbfef34908931ebeaa4da1a8d21ef79572e5a (diff)
ast: Introduce ast_identifier_t for named ast nodes
Prior to this change, ast_variable_declaration_t and ast_function_declaration_t used a string_view as an identifier. However, to support scoped identifiers, it is more appropriate to use an ast_identifier_t as a reference. Signed-off-by: Carlos Maniero <carlosmaniero@gmail.com> Co-authored-by: Johnny Richard <johnny@johnnyrichard.com>
Diffstat (limited to 'src/ast.c')
-rw-r--r--src/ast.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ast.c b/src/ast.c
index b2ce1bb..7bad020 100644
--- a/src/ast.c
+++ b/src/ast.c
@@ -77,10 +77,12 @@ ast_node_init_return_stmt(ast_node_t *node, ast_node_t *argument)
}
void
-ast_node_init_function_declaration(ast_node_t *node, string_view_t name, type_t return_type, vector_t *body)
+ast_node_init_function_declaration(ast_node_t *node, string_view_t function_name, type_t return_type, vector_t *body)
{
node->kind = AST_FUNCTION_DECLARATION;
- node->data = (ast_node_data_t){ .function = { .name = name, .return_type = return_type, .body = body } };
+ node->data = (ast_node_data_t){
+ .function = { .identifier = { .name = function_name }, .return_type = return_type, .body = body }
+ };
}
void
@@ -101,7 +103,8 @@ void
ast_node_init_variable_declaration(ast_node_t *node, string_view_t variable_name, type_t type, ast_node_t *value)
{
node->kind = AST_VARIABLE_DECLARATION;
- node->data = (ast_node_data_t){ .variable = { .name = variable_name, .type = type, .value = value } };
+ node->data =
+ (ast_node_data_t){ .variable = { .identifier = { .name = variable_name }, .type = type, .value = value } };
}
void