diff --git a/libs/ast/src/ast_dump.c b/libs/ast/src/ast_dump.c index 5deb39c..c834c13 100644 --- a/libs/ast/src/ast_dump.c +++ b/libs/ast/src/ast_dump.c @@ -355,7 +355,9 @@ static void dump_type_impl(scc_ast_type_t *type, scc_tree_dump_ctx_t *ctx) { dump_type_impl(param->param.type, ctx); } } else { + scc_tree_print_indent(ctx); PRINT_QUOTED_VALUE(ctx, "()"); + scc_tree_dump_printf(ctx, "\n"); } scc_vec_pop(ctx->stack); break; diff --git a/libs/parser/include/scc_sema.h b/libs/parser/include/scc_sema.h index 15a4781..47c4924 100644 --- a/libs/parser/include/scc_sema.h +++ b/libs/parser/include/scc_sema.h @@ -24,5 +24,6 @@ typedef struct scc_sema_callbacks { } scc_sema_callbacks_t; void scc_sema_init(scc_sema_callbacks_t *callbacks); +void scc_sema_drop(scc_sema_callbacks_t *callbacks); #endif /* __SCC_SEMA_H__ */ diff --git a/libs/parser/src/scc_sema.c b/libs/parser/src/scc_sema.c index 97affcc..f1610aa 100644 --- a/libs/parser/src/scc_sema.c +++ b/libs/parser/src/scc_sema.c @@ -14,3 +14,5 @@ void scc_sema_init(scc_sema_callbacks_t *callbacks) { callbacks->on_type = null; callbacks->got_type = null; } + +void scc_sema_drop(scc_sema_callbacks_t *callbacks) {} diff --git a/libs/parser/tests/test_parser_unit.c b/libs/parser/tests/test_parser_unit.c index 3fa8b8d..b38056e 100644 --- a/libs/parser/tests/test_parser_unit.c +++ b/libs/parser/tests/test_parser_unit.c @@ -1123,6 +1123,8 @@ static void test_parser_type(void) { scc_ast_type_t struct_type; scc_ast_type_struct_init(&struct_type, null, &struct_def); SCC_CHECK_AST(&struct_type.base, "struct { int x; }", _scc_parse_type); + scc_vec_init(fields); + scc_vec_push(fields, &field); scc_ast_decl_struct_init(&struct_def, "A", &fields); scc_ast_type_struct_init(&struct_type, "A", &struct_def); SCC_CHECK_AST(&struct_type.base, "struct A { int x; }", diff --git a/src/main.c b/src/main.c index 2af75f2..23d05ef 100644 --- a/src/main.c +++ b/src/main.c @@ -271,14 +271,17 @@ int main(int argc, const char **argv, const char **envp) { scc_lexer_tok_ring_t *tok_ring = scc_pproc_to_ring(&pproc, 8, false, false); scc_parser_t parser; - scc_parser_init(&parser, tok_ring, null); + scc_sema_callbacks_t sema_callbacks; + scc_sema_init(&sema_callbacks); + scc_parser_init(&parser, tok_ring, &sema_callbacks); scc_ast_translation_unit_t *translation_unit = scc_parse_translation_unit(&parser); - // scc_parser_drop(&parser); - // scc_pproc_drop(&pproc); - // scc_lexer_drop(&lexer); - // scc_sstream_drop(&sstream); + scc_sema_drop(&sema_callbacks); + scc_parser_drop(&parser); + scc_pproc_drop(&pproc); + scc_lexer_drop(&lexer); + scc_sstream_drop(&sstream); if (config.emit_ast) { scc_tree_dump_ctx_t tree_dump;