From 23ed5c8f5f1db5449809250c6088966089878c46 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 7 Oct 2024 14:50:41 -0700 Subject: [PATCH] allow 'only' view rule to determine sort-order of members in constructed type info --- src/eval/eval_types.c | 2 +- .../eval_visualization_builtin_view_rules.c | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/eval/eval_types.c b/src/eval/eval_types.c index 82272196..734c47b1 100644 --- a/src/eval/eval_types.c +++ b/src/eval/eval_types.c @@ -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); } diff --git a/src/eval_visualization/eval_visualization_builtin_view_rules.c b/src/eval_visualization/eval_visualization_builtin_view_rules.c index 29f65814..3660a795 100644 --- a/src/eval_visualization/eval_visualization_builtin_view_rules.c +++ b/src/eval_visualization/eval_visualization_builtin_view_rules.c @@ -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, ¤t_members.v[idx]); break; } } - if(include) - { - e_member_list_push(scratch.arena, &new_members, ¤t_members.v[idx]); - } } E_MemberArray new_members_array = e_member_array_from_list(scratch.arena, &new_members); E_TypeKey new_type = {0};