diff --git a/metaprogram.jai b/metaprogram.jai index 7f7379d..e68a7b9 100644 --- a/metaprogram.jai +++ b/metaprogram.jai @@ -527,9 +527,11 @@ message_loop :: () { for typechecked.procedure_headers { if it.expression.name == "deinit_entity" { - //struct_type := cast(*Type_Info_Struct)it.expression.arguments[0].type_inst.pointer_to; - struct_type := cast(*Type_Info_Struct)it.expression.arguments[0].type_inst.pointer_to.result; - array_add(*deinit_entity_procs, struct_type.name); + if it.expression.arguments.count > 0 { + //struct_type := cast(*Type_Info_Struct)it.expression.arguments[0].type_inst.pointer_to; + struct_type := cast(*Type_Info_Struct)it.expression.arguments[0].type_inst.pointer_to.result; + array_add(*deinit_entity_procs, struct_type.name); + } } else { for note: it.expression.notes { if to_lower_copy(note.text,, temp) == { @@ -685,14 +687,19 @@ generate_code :: (w: Workspace) { } { - builder: String_Builder; + if deinit_entity_procs.count > 0 { + builder: String_Builder; - for deinit_entity_procs { - print_to_builder(*builder, "\tcase %1; deinit_entity(cast(*%1)e);\n", it); + for deinit_entity_procs { + print_to_builder(*builder, "\tcase %1; deinit_entity(cast(*%1)e);\n", it); + } + + build_string := sprint(DEINIT_ENTITY, builder_to_string(*builder)); + add_build_string(build_string, w); + } else { + add_build_string("call_correct_deinit_entity :: (e: *Entity) {}", w); + add_build_string("deinit_entity :: () {}", w); } - - build_string := sprint(DEINIT_ENTITY, builder_to_string(*builder)); - add_build_string(build_string, w); } {