From 6bcbf5909d630570dd7eb6ceb0781975875e160d Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 13 Oct 2025 11:23:49 -0700 Subject: [PATCH] correctly handle bitfield type operators in eval viz string iterator --- src/eval_visualization/eval_visualization_core.c | 12 ++++++++++++ src/mule/mule_main.cpp | 14 ++++++++++++++ 2 files changed, 26 insertions(+) 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;