diff --git a/src/eval_visualization/eval_visualization_core.c b/src/eval_visualization/eval_visualization_core.c index 6d2c04ac..2451b70f 100644 --- a/src/eval_visualization/eval_visualization_core.c +++ b/src/eval_visualization/eval_visualization_core.c @@ -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 // diff --git a/src/mule/mule_main.cpp b/src/mule/mule_main.cpp index 00a60072..19f70cb2 100644 --- a/src/mule/mule_main.cpp +++ b/src/mule/mule_main.cpp @@ -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;