From b1f7b0cccc6986ca107d9eeb1c7d5e5e5a32dc49 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Sun, 30 Apr 2023 03:11:00 -0300 Subject: gas: Compile variable expression with scope support This patch adds the variable compilation and uses a scope (a stack of map) to lookup for identities. Today we use a vector + ref_entry structs in order to achieve the scope implementation. The ref_entry lacks memory management, we are still no sure who will be the owner of the pointer. We also want to replace the scope a hashtable_t type as soon as we get one. Signed-off-by: Johnny Richard Co-authored-by: Carlos Maniero --- test/integration_test.c | 1 + test/parser_test.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/integration_test.c b/test/integration_test.c index 739a938..4178b42 100644 --- a/test/integration_test.c +++ b/test/integration_test.c @@ -42,6 +42,7 @@ test_examples(const MunitParameter params[], void *user_data_or_fixture) { assert_exit_status("../examples/main.pipa", 69); assert_exit_status("../examples/arithmetics.pipa", 13); + assert_exit_status("../examples/variables.pipa", 28); return MUNIT_OK; } diff --git a/test/parser_test.c b/test/parser_test.c index d534509..5d615ec 100644 --- a/test/parser_test.c +++ b/test/parser_test.c @@ -126,8 +126,8 @@ test_parse_variable_definition(const MunitParameter params[], void *user_data_or ast_node_t *ast_literal = ast_return->data.return_stmt.argument; - assert_int(AST_IDENTIFIER, ==, ast_literal->kind); - assert_string_view_equal("variable", ast_literal->data.identifier.name); + assert_int(AST_VARIABLE, ==, ast_literal->kind); + assert_string_view_equal("variable", ast_literal->data.variable.identifier->name); ast_node_destroy(ast_function); scope_destroy(scope); -- cgit v1.2.3