mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-18 20:02:22 -07:00
opaque keyword and type
This commit is contained in:
+10
-2
@@ -2273,6 +2273,10 @@ irDebugInfo *ir_add_debug_info_type(irModule *module, Type *type, Entity *e, irD
|
||||
return di;
|
||||
}
|
||||
|
||||
if (is_type_opaque(type)) {
|
||||
return ir_add_debug_info_type(module, strip_opaque_type(type), e, scope, file);
|
||||
}
|
||||
|
||||
if (is_type_struct(type) ||
|
||||
is_type_union(type) || is_type_enum(type) || is_type_tuple(type)) {
|
||||
if (type->kind == Type_Named) {
|
||||
@@ -9455,10 +9459,14 @@ void ir_setup_type_info_data(irProcedure *proc) { // NOTE(bill): Setup type_info
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 3), ir_const_i64(t->BitSet.upper));
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case Type_Opaque:
|
||||
ir_emit_comment(proc, str_lit("Type_Opaque"));
|
||||
tag = ir_emit_conv(proc, variant_ptr, t_type_info_opaque_ptr);
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 0), ir_get_type_info_ptr(proc, t->Opaque.elem));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (tag != nullptr) {
|
||||
Type *tag_type = type_deref(ir_type(tag));
|
||||
GB_ASSERT(is_type_named(tag_type));
|
||||
|
||||
Reference in New Issue
Block a user