diff options
Diffstat (limited to 'test/parser_test.c')
-rw-r--r-- | test/parser_test.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/test/parser_test.c b/test/parser_test.c index b75f69f..30aa285 100644 --- a/test/parser_test.c +++ b/test/parser_test.c @@ -40,13 +40,21 @@ test_parse_function(const MunitParameter params[], make_lexer_from_static_src(&lexer, "main(): i32 { return 42; }"); parser_init(&parser, &lexer); - ast_function_t ast_function = parser_parse_function(&parser); + ast_node_t *ast_function = ast_node_new(); + parser_parse_function_declaration(&parser, ast_function); char actual[5]; - string_view_to_str(&ast_function.name, actual); + string_view_to_str(&ast_function->data.function.name, actual); assert_string_equal("main", actual); - assert_int(42, ==, ast_function.body.number); + assert_int(AST_FUNCTION_DECLARATION, ==, ast_function->kind); + + ast_node_t *ast_return = ast_function->data.function.body; + + assert_int(AST_RETURN_STMT, ==, ast_return->kind); + assert_int(42, ==, ast_return->data.return_stmt.number); + + ast_node_destroy(ast_function); return MUNIT_OK; } |