mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
fix slice view rule to apply correctly to pointers/refs->structs too
This commit is contained in:
@@ -159,7 +159,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(BUILD_VERSION_PATCH)
|
#if !defined(BUILD_VERSION_PATCH)
|
||||||
# define BUILD_VERSION_PATCH 15
|
# define BUILD_VERSION_PATCH 16
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BUILD_VERSION_STRING_LITERAL Stringify(BUILD_VERSION_MAJOR) "." Stringify(BUILD_VERSION_MINOR) "." Stringify(BUILD_VERSION_PATCH)
|
#define BUILD_VERSION_STRING_LITERAL Stringify(BUILD_VERSION_MAJOR) "." Stringify(BUILD_VERSION_MINOR) "." Stringify(BUILD_VERSION_PATCH)
|
||||||
|
|||||||
+18
-2
@@ -368,11 +368,27 @@ E_LOOKUP_INFO_FUNCTION_DEF(slice)
|
|||||||
E_LookupInfo info = {0};
|
E_LookupInfo info = {0};
|
||||||
{
|
{
|
||||||
Temp scratch = scratch_begin(&arena, 1);
|
Temp scratch = scratch_begin(&arena, 1);
|
||||||
E_TypeKind type_kind = e_type_kind_from_key(lhs->type_key);
|
|
||||||
|
// rjf: unpack struct type
|
||||||
|
E_TypeKey struct_type_key = e_type_unwrap(lhs->type_key);
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if(e_type_kind_is_pointer_or_ref(e_type_kind_from_key(struct_type_key)))
|
||||||
|
{
|
||||||
|
struct_type_key = e_type_unwrap(e_type_direct_from_key(struct_type_key));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// rjf: build info from struct type
|
||||||
|
E_TypeKind type_kind = e_type_kind_from_key(struct_type_key);
|
||||||
if(type_kind == E_TypeKind_Struct || type_kind == E_TypeKind_Class)
|
if(type_kind == E_TypeKind_Struct || type_kind == E_TypeKind_Class)
|
||||||
{
|
{
|
||||||
// rjf: unpack members
|
// rjf: unpack members
|
||||||
E_MemberArray members = e_type_data_members_from_key__cached(lhs->type_key);
|
E_MemberArray members = e_type_data_members_from_key__cached(struct_type_key);
|
||||||
|
|
||||||
// rjf: choose base pointer & count members
|
// rjf: choose base pointer & count members
|
||||||
E_Member *base_ptr_member = 0;
|
E_Member *base_ptr_member = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user