allow 'only' view rule to determine sort-order of members in constructed type info

This commit is contained in:
Ryan Fleury
2024-10-07 14:50:41 -07:00
parent c7ce08fd71
commit 23ed5c8f5f
2 changed files with 4 additions and 9 deletions
+1 -1
View File
@@ -1479,7 +1479,7 @@ e_type_data_members_from_key(Arena *arena, E_TypeKey key)
}
//- rjf: sort array by offset if needed
if(members_need_offset_sort)
if(members_need_offset_sort && (root_type_kind == E_TypeKind_Struct || root_type_kind == E_TypeKind_Class) && key.kind != E_TypeKeyKind_Cons)
{
quick_sort(members.v, members.count, sizeof(E_Member), e_type_qsort_compare_members_offset);
}
@@ -393,21 +393,16 @@ EV_VIEW_RULE_EXPR_RESOLUTION_FUNCTION_DEF(only)
{
E_MemberArray current_members = e_type_data_members_from_key(scratch.arena, irtree.type_key);
E_MemberList new_members = {0};
for EachIndex(idx, current_members.count)
for MD_EachNode(node, params->first)
{
B32 include = 0;
for MD_EachNode(node, params->first)
for EachIndex(idx, current_members.count)
{
if(str8_match(node->string, current_members.v[idx].name, 0))
{
include = 1;
e_member_list_push(scratch.arena, &new_members, &current_members.v[idx]);
break;
}
}
if(include)
{
e_member_list_push(scratch.arena, &new_members, &current_members.v[idx]);
}
}
E_MemberArray new_members_array = e_member_array_from_list(scratch.arena, &new_members);
E_TypeKey new_type = {0};