Working on type operations and type infos

This commit is contained in:
Krzosa Karol
2022-06-19 00:05:22 +02:00
parent 9d2ce3560b
commit fc0d4345ee
4 changed files with 37 additions and 22 deletions

View File

@@ -837,11 +837,11 @@ typedef struct String{
gen_ast(it);
}
genln("S32 type_infos_len = %d;", pctx->all_types.len);
genln("S64 type_infos_len = %d;", pctx->all_types.len);
genln("Type_Info *type_infos = (Type_Info[]){");
global_indent++;
For(pctx->all_types){
genln("{/*%Q*/.kind = %d, .size = %d, .align = %d, .is_unsigned = %s, .type_id = %d, ", typestring(it),
genln("{/*%Q*/.kind = %d, .size = %d, .align = %d, .is_unsigned = %s, .type = %d, ", typestring(it),
(S32)it->kind, (S32)it->size, (S32)it->align, it->is_unsigned ? "true" : "false", it->type_id);
switch(it->kind){
case TYPE_POINTER:
@@ -857,7 +857,7 @@ typedef struct String{
gen(".lambda_argument_count = %d, ", it->func.args.len);
gen(".lambda_arguments = (Type_Info[%d]){", it->func.args.len);
For_Named(it->func.args, arg){
gen("{.type_id = %d}, ", arg->type_id);
gen("{.type = %d}, ", arg->type_id);
}
gen("}");
} break;
@@ -865,7 +865,7 @@ typedef struct String{
gen(".struct_member_count = %d, ", it->agg.members.len);
gen(".struct_members = (Type_Info_Struct_Member[]){");
For_Named(it->agg.members, m){
gen("{.name = LIT(\"%Q\"), .type_id = %d, .offset = %d}, ", m.name, m.type->type_id, m.offset);
gen("{.name = LIT(\"%Q\"), .type = %d, .offset = %d}, ", m.name, m.type->type_id, m.offset);
}
gen("}");