mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Ensure add_type_info_type and add_min_dep_type_info are consistent
This commit is contained in:
+31
-20
@@ -1329,6 +1329,15 @@ void add_type_info_type(CheckerContext *c, Type *t) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Type_Opaque:
|
||||||
|
add_type_info_type(c, bt->Opaque.elem);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Type_BitSet:
|
||||||
|
add_type_info_type(c, bt->BitSet.elem);
|
||||||
|
add_type_info_type(c, bt->BitSet.underlying);
|
||||||
|
break;
|
||||||
|
|
||||||
case Type_Pointer:
|
case Type_Pointer:
|
||||||
add_type_info_type(c, bt->Pointer.elem);
|
add_type_info_type(c, bt->Pointer.elem);
|
||||||
break;
|
break;
|
||||||
@@ -1362,20 +1371,6 @@ void add_type_info_type(CheckerContext *c, Type *t) {
|
|||||||
add_type_info_type(c, bt->Enum.base_type);
|
add_type_info_type(c, bt->Enum.base_type);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_BitSet:
|
|
||||||
add_type_info_type(c, bt->BitSet.elem);
|
|
||||||
add_type_info_type(c, bt->BitSet.underlying);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Type_BitFieldValue:
|
|
||||||
break;
|
|
||||||
case Type_BitField:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Type_Opaque:
|
|
||||||
add_type_info_type(c, bt->Opaque.elem);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Type_Union:
|
case Type_Union:
|
||||||
if (union_tag_size(t) > 0) {
|
if (union_tag_size(t) > 0) {
|
||||||
add_type_info_type(c, union_tag_type(t));
|
add_type_info_type(c, union_tag_type(t));
|
||||||
@@ -1411,6 +1406,11 @@ void add_type_info_type(CheckerContext *c, Type *t) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Type_BitFieldValue:
|
||||||
|
break;
|
||||||
|
case Type_BitField:
|
||||||
|
break;
|
||||||
|
|
||||||
case Type_Map:
|
case Type_Map:
|
||||||
init_map_internal_types(bt);
|
init_map_internal_types(bt);
|
||||||
add_type_info_type(c, bt->Map.key);
|
add_type_info_type(c, bt->Map.key);
|
||||||
@@ -1570,9 +1570,9 @@ void add_min_dep_type_info(Checker *c, Type *t) {
|
|||||||
break;
|
break;
|
||||||
case Type_EnumeratedArray:
|
case Type_EnumeratedArray:
|
||||||
add_min_dep_type_info(c, bt->EnumeratedArray.index);
|
add_min_dep_type_info(c, bt->EnumeratedArray.index);
|
||||||
|
add_min_dep_type_info(c, t_int);
|
||||||
add_min_dep_type_info(c, bt->EnumeratedArray.elem);
|
add_min_dep_type_info(c, bt->EnumeratedArray.elem);
|
||||||
add_min_dep_type_info(c, alloc_type_pointer(bt->EnumeratedArray.elem));
|
add_min_dep_type_info(c, alloc_type_pointer(bt->EnumeratedArray.elem));
|
||||||
add_min_dep_type_info(c, t_int);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_DynamicArray:
|
case Type_DynamicArray:
|
||||||
@@ -1603,16 +1603,27 @@ void add_min_dep_type_info(Checker *c, Type *t) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_Struct:
|
case Type_Struct:
|
||||||
for_array(i, bt->Struct.fields) {
|
|
||||||
Entity *f = bt->Struct.fields[i];
|
|
||||||
add_min_dep_type_info(c, f->type);
|
|
||||||
}
|
|
||||||
if (bt->Struct.scope != nullptr) {
|
if (bt->Struct.scope != nullptr) {
|
||||||
for_array(i, bt->Struct.scope->elements.entries) {
|
for_array(i, bt->Struct.scope->elements.entries) {
|
||||||
Entity *e = bt->Struct.scope->elements.entries[i].value;
|
Entity *e = bt->Struct.scope->elements.entries[i].value;
|
||||||
add_min_dep_type_info(c, e->type);
|
switch (bt->Struct.soa_kind) {
|
||||||
|
case StructSoa_Dynamic:
|
||||||
|
add_min_dep_type_info(c, t_allocator);
|
||||||
|
/*fallthrough*/
|
||||||
|
case StructSoa_Slice:
|
||||||
|
case StructSoa_Fixed:
|
||||||
|
add_min_dep_type_info(c, alloc_type_pointer(e->type));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
add_min_dep_type_info(c, e->type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for_array(i, bt->Struct.fields) {
|
||||||
|
Entity *f = bt->Struct.fields[i];
|
||||||
|
add_min_dep_type_info(c, f->type);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type_BitFieldValue:
|
case Type_BitFieldValue:
|
||||||
|
|||||||
Reference in New Issue
Block a user