correctly handle bitfield type operators in eval viz string iterator

This commit is contained in:
Ryan Fleury
2025-10-13 11:23:49 -07:00
parent b41bf5b39e
commit 6bcbf5909d
2 changed files with 26 additions and 0 deletions
@@ -1769,6 +1769,18 @@ ev_string_iter_next(Arena *arena, EV_StringIter *it, String8 *out_string)
new_task.eval.irtree.type_key = e_type_key_direct(eval.irtree.type_key);
}break;
//////////////////////////
//- rjf: bitfields
//
case E_TypeKind_Bitfield:
{
need_pop = 1;
need_new_task = 1;
new_task.params = *params;
new_task.eval = e_value_eval_from_eval(eval);
new_task.eval.irtree.type_key = e_type_key_direct(eval.irtree.type_key);
}break;
//////////////////////////
//- rjf: pointers
//
+14
View File
@@ -523,6 +523,20 @@ type_coverage_eval_tests(void)
Has_Enums has_enums = {(Kind)4, (Flag)7};
struct EnumBitfields
{
Kind k1 : 4;
Kind k2 : 3;
Kind k3 : 1;
Kind k4 : 16;
};
EnumBitfields enum_bitfields = {};
enum_bitfields.k1 = Kind_First;
enum_bitfields.k2 = Kind_Second;
enum_bitfields.k3 = Kind_None;
enum_bitfields.k4 = Kind_Fourth;
Crazy_Union crazy_union = {};
crazy_union.kind = Kind_First;