fix <64-bit integer eval stringification path, to not interpret too many bits

This commit is contained in:
Ryan Fleury
2025-07-23 13:26:23 -07:00
parent 6026ac16d4
commit 87fa6b9239
4 changed files with 37 additions and 11 deletions
+3 -1
View File
@@ -57,9 +57,11 @@ union E_Value
U64 u64;
U32 u32;
U16 u16;
U8 u8;
S64 s64;
S32 s32;
S32 s16;
S16 s16;
S8 s8;
F64 f64;
F32 f32;
};
@@ -1292,6 +1292,8 @@ ev_string_from_simple_typed_eval(Arena *arena, EV_StringParams *params, E_Eval e
{
digit_group_separator = 0;
}
S64 s64 = 0;
U64 u64 = 0;
F64 f64 = 0;
switch(type_kind)
{
@@ -1366,20 +1368,22 @@ ev_string_from_simple_typed_eval(Arena *arena, EV_StringParams *params, E_Eval e
}
}break;
case E_TypeKind_S8:
case E_TypeKind_S16:
case E_TypeKind_S32:
case E_TypeKind_S64:
case E_TypeKind_S8: s64 = (S64)eval.value.s8; goto sint_path;
case E_TypeKind_S16: s64 = (S64)eval.value.s16; goto sint_path;
case E_TypeKind_S32: s64 = (S64)eval.value.s32; goto sint_path;
case E_TypeKind_S64: s64 = (S64)eval.value.s64; goto sint_path;
sint_path:;
{
result = str8_from_s64(arena, eval.value.s64, params->radix, params->min_digits, digit_group_separator);
result = str8_from_s64(arena, s64, params->radix, params->min_digits, digit_group_separator);
}break;
case E_TypeKind_U8:
case E_TypeKind_U16:
case E_TypeKind_U32:
case E_TypeKind_U64:
case E_TypeKind_U8: u64 = (U64)eval.value.u8; goto uint_path;
case E_TypeKind_U16: u64 = (U64)eval.value.u16; goto uint_path;
case E_TypeKind_U32: u64 = (U64)eval.value.u32; goto uint_path;
case E_TypeKind_U64: u64 = (U64)eval.value.u64; goto uint_path;
uint_path:;
{
result = str8_from_u64(arena, eval.value.u64, params->radix, params->min_digits, digit_group_separator);
result = str8_from_u64(arena, u64, params->radix, params->min_digits, digit_group_separator);
}break;
case E_TypeKind_U128:
+3
View File
@@ -395,6 +395,9 @@ type_coverage_eval_tests(void)
Basics basics = {-1, 1, -2, 2, -4, 4, -8, 8, 1.5f, 1.50000000000001};
Basics_Stdint basics_stdint = {-1, 1, -2, 2, -4, 4, -8, 8, 1.5f, 1.50000000000001};
uint32_t a = (1<<31);
int32_t b = (1<<31);
char string[] = "Hello World!";
char longer_text[] =
"Suppose there was some text\n"
+17
View File
@@ -5072,6 +5072,23 @@ rd_view_ui(Rng2F32 rect)
//- rjf: handle interactions
//
{
// rjf: hover -> debug log
if(DEV_eval_compiler_tooltips)
{
if(ui_hovering(sig)) UI_Tooltip
{
String8 text = e_debug_log_from_expr_string(scratch.arena, cell->eval.string);
String8List lines = str8_split(scratch.arena, text, (U8 *)"\n", 1, StringSplitFlag_KeepEmpties);
for(String8Node *n = lines.first; n != 0; n = n->next)
{
if(n->string.size != 0)
{
ui_label(n->string);
}
}
}
}
// rjf: hover -> rich hover cfgs
if(ui_hovering(sig) && cell_info.cfg != &rd_nil_cfg)
{