mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 21:38:40 +00:00
correctly evaluate array lens size arguments in the context of the parent expression
This commit is contained in:
@@ -2339,7 +2339,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(array)
|
|||||||
{
|
{
|
||||||
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
E_Type *type = e_type_from_key__cached(eval.irtree.type_key);
|
||||||
U64 count = 1;
|
U64 count = 1;
|
||||||
if(type->args != 0 && type->count > 0)
|
if(type->args != 0 && type->count > 0) E_ParentKey(eval.key)
|
||||||
{
|
{
|
||||||
E_Key count_key = e_key_from_expr(type->args[0]);
|
E_Key count_key = e_key_from_expr(type->args[0]);
|
||||||
E_Value count_value = e_value_from_key(count_key);
|
E_Value count_value = e_value_from_key(count_key);
|
||||||
|
|||||||
@@ -1575,8 +1575,11 @@ ev_string_iter_next(Arena *arena, EV_StringIter *it, String8 *out_string)
|
|||||||
else if(str8_match(type->name, str8_lit("hex"), 0)) { lens_params.radix = 16; }
|
else if(str8_match(type->name, str8_lit("hex"), 0)) { lens_params.radix = 16; }
|
||||||
else if(str8_match(type->name, str8_lit("digits"), 0) && type->count >= 1)
|
else if(str8_match(type->name, str8_lit("digits"), 0) && type->count >= 1)
|
||||||
{
|
{
|
||||||
E_Value value = e_value_from_expr(type->args[0]);
|
E_ParentKey(eval.key)
|
||||||
lens_params.min_digits = value.u64;
|
{
|
||||||
|
E_Value value = e_value_from_expr(type->args[0]);
|
||||||
|
lens_params.min_digits = value.u64;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(str8_match(type->name, str8_lit("no_string"), 0))
|
else if(str8_match(type->name, str8_lit("no_string"), 0))
|
||||||
{
|
{
|
||||||
@@ -1596,8 +1599,11 @@ ev_string_iter_next(Arena *arena, EV_StringIter *it, String8 *out_string)
|
|||||||
element_type_kind == E_TypeKind_S8 ||
|
element_type_kind == E_TypeKind_S8 ||
|
||||||
element_type_kind == E_TypeKind_U8)))
|
element_type_kind == E_TypeKind_U8)))
|
||||||
{
|
{
|
||||||
lens_params.limit_strings = 1;
|
E_ParentKey(eval.key)
|
||||||
lens_params.limit_strings_size = e_value_from_expr(type->args[0]).u64;
|
{
|
||||||
|
lens_params.limit_strings = 1;
|
||||||
|
lens_params.limit_strings_size = e_value_from_expr(type->args[0]).u64;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9801,21 +9801,6 @@ rd_autocomp_cursor_info_from_input_string_off(Arena *arena, String8 input, U64 c
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
|
||||||
rd_autocomp_query_word_from_input_string_off(String8 input, U64 cursor_off)
|
|
||||||
{
|
|
||||||
U64 word_start_off = 0;
|
|
||||||
for(U64 off = 0; off < input.size && off < cursor_off; off += 1)
|
|
||||||
{
|
|
||||||
if(!char_is_alpha(input.str[off]) && !char_is_digit(input.str[off], 10) && input.str[off] != '_')
|
|
||||||
{
|
|
||||||
word_start_off = off+1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String8 query = str8_skip(str8_prefix(input, cursor_off), word_start_off);
|
|
||||||
return query;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
rd_set_autocomp_regs_(RD_Regs *regs)
|
rd_set_autocomp_regs_(RD_Regs *regs)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -963,7 +963,6 @@ internal void rd_set_hover_eval(Vec2F32 pos, String8 string);
|
|||||||
//~ rjf: Autocompletion Lister
|
//~ rjf: Autocompletion Lister
|
||||||
|
|
||||||
internal RD_AutocompCursorInfo rd_autocomp_cursor_info_from_input_string_off(Arena *arena, String8 input, U64 cursor_off);
|
internal RD_AutocompCursorInfo rd_autocomp_cursor_info_from_input_string_off(Arena *arena, String8 input, U64 cursor_off);
|
||||||
internal String8 rd_autocomp_query_word_from_input_string_off(String8 input, U64 cursor_off);
|
|
||||||
internal void rd_set_autocomp_regs_(RD_Regs *regs);
|
internal void rd_set_autocomp_regs_(RD_Regs *regs);
|
||||||
#define rd_set_autocomp_regs(...) rd_set_autocomp_regs_(&(RD_Regs){rd_regs_lit_init_top __VA_ARGS__})
|
#define rd_set_autocomp_regs(...) rd_set_autocomp_regs_(&(RD_Regs){rd_regs_lit_init_top __VA_ARGS__})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user