From f53d5dd1f240ce6d787aca72663c0a1c7148c5dd Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Tue, 28 Mar 2023 21:14:41 +0200 Subject: [PATCH] Remove ast_visit --- core_compiler.cpp | 141 ---------------------------------------------- 1 file changed, 141 deletions(-) diff --git a/core_compiler.cpp b/core_compiler.cpp index 9438e63..345a961 100644 --- a/core_compiler.cpp +++ b/core_compiler.cpp @@ -429,147 +429,6 @@ GetTypeInfo :: (type: Type): *Type_Info pctx->type_string = string_decl->type_val; } -typedef void Ast_Visit_Callback(Ast *ast); - -void ast_visit(uint32_t visit_id, Ast_Visit_Callback *callback, Ast *ast) { - if (!ast) return; - - callback(ast); - switch(ast->kind) { - CASE(MODULE, Module) { - if (node->visit_id == visit_id) return; - node->visit_id = visit_id; - For(node->decls) ast_visit(visit_id, callback, it); - For(node->implicit_imports) ast_visit(visit_id, callback, it); - For(node->stmts) ast_visit(visit_id, callback, it); - For(node->all_loaded_files) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(FILE, File) { - if (node->visit_id == visit_id) return; - node->visit_id = visit_id; - For(node->decls) ast_visit(visit_id, callback, it); - For(node->implicit_imports) ast_visit(visit_id, callback, it); - For(node->stmts) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(SCOPE, Scope) { - if (node->visit_id == visit_id) return; - node->visit_id = visit_id; - For(node->decls) ast_visit(visit_id, callback, it); - For(node->implicit_imports) ast_visit(visit_id, callback, it); - For(node->stmts) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(LAMBDA, Decl){ - Ast_Lambda *lambda = node->lambda; - For(lambda->ret) ast_visit(visit_id, callback, it); - For(lambda->args) ast_visit(visit_id, callback, it); - ast_visit(visit_id, callback, node->typespec); - ast_visit(visit_id, callback, node->scope); - ast_visit(visit_id, callback, lambda->scope); - BREAK(); - } - CASE(CONST, Decl){ - ast_visit(visit_id, callback, node->expr); - ast_visit(visit_id, callback, node->typespec); - ast_visit(visit_id, callback, node->scope); - BREAK(); - } - CASE(VAR, Decl){ - ast_visit(visit_id, callback, node->expr); - ast_visit(visit_id, callback, node->typespec); - ast_visit(visit_id, callback, node->scope); - BREAK(); - } - case AST_NAMESPACE: - CASE(ENUM, Decl){ - ast_visit(visit_id, callback, node->typespec); - For(node->scope->decls) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(INDEX, Index) { - ast_visit(visit_id, callback, node->expr); - ast_visit(visit_id, callback, node->index); - BREAK(); - } - CASE(STRUCT, Decl) { - // @todo - BREAK(); - } - CASE(ARRAY, Array) { - ast_visit(visit_id, callback, node->base); - ast_visit(visit_id, callback, node->expr); - BREAK(); - } - CASE(BINARY, Binary) { - ast_visit(visit_id, callback, node->left); - ast_visit(visit_id, callback, node->right); - BREAK(); - } - CASE(VAR_UNPACK, Var_Unpack) { - For(node->vars) ast_visit(visit_id, callback, it); - ast_visit(visit_id, callback, node->expr); - BREAK(); - } - CASE(UNARY, Unary) { - ast_visit(visit_id, callback, node->expr); - BREAK(); - } - case AST_COMPOUND: - CASE(CALL, Call){ - ast_visit(visit_id, callback, node->name); // @union - For(node->exprs) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(CALL_ITEM, Call_Item){ - ast_visit(visit_id, callback, node->item); - ast_visit(visit_id, callback, node->name); // @union - BREAK(); - } - case AST_CONSTANT_ASSERT: - CASE(RUNTIME_ASSERT, Builtin){ - ast_visit(visit_id, callback, node->expr); - BREAK(); - } - CASE(RETURN, Return){ - For(node->expr) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(FOR, For) { - ast_visit(visit_id, callback, node->init); - ast_visit(visit_id, callback, node->cond); - ast_visit(visit_id, callback, node->iter); - ast_visit(visit_id, callback, node->scope); - ast_visit(visit_id, callback, node->array_traversal_var); - BREAK(); - } - CASE(IF, If) { - For(node->ifs) ast_visit(visit_id, callback, it); - BREAK(); - } - CASE(IF_NODE, If_Node) { - ast_visit(visit_id, callback, node->expr); - ast_visit(visit_id, callback, node->scope); - ast_visit(visit_id, callback, node->init); - BREAK(); - } - CASE(SWITCH_CASE, Switch_Case) { - For(node->labels) ast_visit(visit_id, callback, it); - ast_visit(visit_id, callback, node->scope); - BREAK(); - } - CASE(SWITCH, Switch) { - ast_visit(visit_id, callback, node->value); - For(node->cases) ast_visit(visit_id, callback, it); - ast_visit(visit_id, callback, node->default_scope); - BREAK(); - } - case AST_VALUE: case AST_IDENT: case AST_PASS: case AST_BREAK: break; - invalid_default_case; - } -} - CORE_Static String compile_file_to_string(Allocator *allocator, String filename) { F64 total_time = os_time();