From e5ea7b1134297fc76489d84f54b4357ffd1d740c Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 8 Sep 2025 16:10:11 +0100 Subject: [PATCH] lang: codegen: remove old var declaration generator --- lang/codegen/block.c | 1 - lang/codegen/codegen.h | 2 +- lang/codegen/generator.c | 4 +-- lang/codegen/return.c | 4 +-- lang/codegen/unit.c | 59 ---------------------------------------- lang/codegen/var.c | 4 ++- 6 files changed, 8 insertions(+), 66 deletions(-) diff --git a/lang/codegen/block.c b/lang/codegen/block.c index 3c91446..39a4904 100644 --- a/lang/codegen/block.c +++ b/lang/codegen/block.c @@ -79,7 +79,6 @@ struct code_generator block_generator = { .g_state_init = state_init, .g_state_fini = state_fini, .g_node_generators = { - NODE_CODEGEN(VAR, gen_var_declaration), NODE_CODEGEN(RETURN, gen_return), }, .g_expr_generator = gen_expr, diff --git a/lang/codegen/codegen.h b/lang/codegen/codegen.h index a29f57e..fe8e6c8 100644 --- a/lang/codegen/codegen.h +++ b/lang/codegen/codegen.h @@ -40,7 +40,7 @@ enum code_generator_type { CODE_GENERATOR_UNIT, CODE_GENERATOR_BLOCK, CODE_GENERATOR_EXPR, - CODE_GENERATOR_VAR, + CODE_GENERATOR_GLOBAL, CODE_GENERATOR_MSG, CODE_GENERATOR_FSTRING, CODE_GENERATOR_LAMBDA, diff --git a/lang/codegen/generator.c b/lang/codegen/generator.c index fba7e19..cda094e 100644 --- a/lang/codegen/generator.c +++ b/lang/codegen/generator.c @@ -5,7 +5,7 @@ extern const struct code_generator unit_generator; extern const struct code_generator block_generator; extern const struct code_generator expr_generator; -extern const struct code_generator var_generator; +extern const struct code_generator global_generator; extern const struct code_generator msg_generator; extern const struct code_generator fstring_generator; extern const struct code_generator lambda_generator; @@ -18,7 +18,7 @@ static const struct code_generator *code_generators[] = { [CODE_GENERATOR_UNIT] = &unit_generator, [CODE_GENERATOR_BLOCK] = &block_generator, [CODE_GENERATOR_EXPR] = &expr_generator, - [CODE_GENERATOR_VAR] = &var_generator, + [CODE_GENERATOR_GLOBAL] = &global_generator, [CODE_GENERATOR_MSG] = &msg_generator, [CODE_GENERATOR_FSTRING] = &fstring_generator, [CODE_GENERATOR_LAMBDA] = &lambda_generator, diff --git a/lang/codegen/return.c b/lang/codegen/return.c index f240b83..bee3c8c 100644 --- a/lang/codegen/return.c +++ b/lang/codegen/return.c @@ -69,14 +69,14 @@ static struct code_generator_result value_received( return CODEGEN_RESULT_ERR(IVY_ERR_BAD_SYNTAX); } - ret->s_value = value; + ret->s_value = value->v_value.mie_value; ret->s_prev_node = IVY_AST_EXPR; return CODEGEN_RESULT_OK(CODEGEN_R_POP_GENERATOR); } struct code_generator return_generator = { - .g_type = CODE_GENERATOR_VAR, + .g_type = CODE_GENERATOR_RETURN, .g_state_size = sizeof(struct return_codegen_state), .g_state_init = state_init, .g_state_fini = state_fini, diff --git a/lang/codegen/unit.c b/lang/codegen/unit.c index 545a8bc..8c6214c 100644 --- a/lang/codegen/unit.c +++ b/lang/codegen/unit.c @@ -166,27 +166,6 @@ static struct code_generator_result gen_unit_import( return CODEGEN_RESULT_OK(0); } -static struct code_generator_result gen_var_declaration( - struct ivy_codegen *gen, struct code_generator_state *state, - struct ivy_ast_node *node, size_t depth) -{ - struct unit_codegen_state *unit = (struct unit_codegen_state *)state; - struct mie_builder *builder = gen->c_builder; - struct mie_func *current = mie_builder_get_current_func(builder); - - enum ivy_status status = IVY_OK; - if (!current || current != unit->s_immediate) { - status = switch_to_immediate_func(gen, unit, ENSURE_OPEN_BLOCK); - } - - if (status != IVY_OK) { - return CODEGEN_RESULT_ERR(status); - } - - codegen_push_generator(gen, CODE_GENERATOR_VAR, 0, NULL); - return CODEGEN_RESULT_OK(CODEGEN_R_REPEAT_NODE); -} - static struct code_generator_result gen_return( struct ivy_codegen *gen, struct code_generator_state *state, struct ivy_ast_node *node, size_t depth) @@ -208,43 +187,6 @@ static struct code_generator_result gen_return( return CODEGEN_RESULT_OK(CODEGEN_R_REPEAT_NODE); } -#if 0 -static struct code_generator_result gen_var_declaration( - struct ivy_codegen *gen, struct code_generator_state *state, - struct ivy_ast_node *node) -{ - struct unit_codegen_state *unit = (struct unit_codegen_state *)state; - struct mie_builder *builder = gen->c_builder; - - struct mie_block *current_block - = mie_builder_get_current_block(gen->c_builder); - - enum ivy_status status = IVY_OK; - if (!current_block || current_block != unit->s_immediate_alloca) { - status = switch_to_immediate_alloca(gen, unit); - } - - struct codegen_value *value = codegen_pop_value(gen); - struct codegen_value *dest = codegen_pop_value(gen); - - if (!dest) { - return CODEGEN_RESULT_ERR(IVY_ERR_BAD_SYNTAX); - } - - struct mie_type *id_type = mie_ctx_get_type(gen->c_ctx, MIE_TYPE_ID); - struct mie_value *var_ptr = mie_builder_alloca(builder, id_type, NULL); - - if (value) { - mie_builder_store(builder, value->v_value, var_ptr); - } - - code_generator_scope_put_variable( - unit->s_scope, (struct ivy_ast_ident_node *)dest->v_node, var_ptr); - - return CODEGEN_RESULT_OK(0); -} -#endif - static enum ivy_status state_init( struct ivy_codegen *gen, struct code_generator_state *state, uintptr_t argv, void *argp) @@ -308,7 +250,6 @@ struct code_generator unit_generator = { .g_state_init = state_init, .g_state_fini = state_fini, .g_node_generators = { - NODE_CODEGEN(VAR, gen_var_declaration), NODE_CODEGEN(RETURN, gen_return), NODE_CODEGEN(UNIT_PACKAGE, gen_unit_package), NODE_CODEGEN(UNIT_IMPORT, gen_unit_import), diff --git a/lang/codegen/var.c b/lang/codegen/var.c index 405958d..98ee1d3 100644 --- a/lang/codegen/var.c +++ b/lang/codegen/var.c @@ -5,6 +5,8 @@ #include #include +#if 0 + struct var_codegen_state { struct code_generator_state s_base; unsigned int s_prev_node; @@ -157,7 +159,7 @@ struct code_generator var_generator = { .g_value_received = value_received, .g_expr_generator = gen_value_expr, .g_node_generators = { - [IVY_AST_VAR] = gen_var, [IVY_AST_IDENT] = gen_ident, }, }; +#endif