From 2e14f34cc867d68ae23bc2ca9d10470592560e49 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 25 Jul 2025 16:11:15 -0700 Subject: [PATCH] derefence pointer/reference evaluations when generating block tree, to match expected behavior, & what the string iterator does --- src/eval_visualization/eval_visualization_core.c | 12 ++++++++++++ src/mule/mule_main.cpp | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/eval_visualization/eval_visualization_core.c b/src/eval_visualization/eval_visualization_core.c index d791877e..669f4703 100644 --- a/src/eval_visualization/eval_visualization_core.c +++ b/src/eval_visualization/eval_visualization_core.c @@ -528,6 +528,18 @@ ev_block_tree_from_eval(Arena *arena, EV_View *view, String8 filter, E_Eval root // rjf: unpack eval E_Mode mode = t->eval.irtree.mode; E_Eval eval = t->eval; + + // rjf: pointers/reference evaluations -> dereference for expansion + { + E_TypeKey type_key = e_type_key_unwrap(eval.irtree.type_key, E_TypeUnwrapFlag_Modifiers|E_TypeUnwrapFlag_Meta); + E_TypeKind type_kind = e_type_kind_from_key(type_key); + if(e_type_kind_is_pointer_or_ref(type_kind)) + { + eval = e_eval_wrapf(eval, "*($)"); + } + } + + // rjf: unpack type key we'll use for expanding this eval E_TypeKey expansion_type_key = ev_expansion_type_from_key(eval.irtree.type_key); if(!e_type_key_match(expansion_type_key, e_type_key_zero())) { diff --git a/src/mule/mule_main.cpp b/src/mule/mule_main.cpp index f7733c56..203b6036 100644 --- a/src/mule/mule_main.cpp +++ b/src/mule/mule_main.cpp @@ -626,6 +626,9 @@ type_coverage_eval_tests(void) int_vector.push_back(6); int_vector.push_back(7); + std::vector *pint_vector = &int_vector; + std::vector &rint_vector = int_vector; + std::vector dynamic_array_vector; dynamic_array_vector.push_back(dynamic); dynamic_array_vector.push_back(dynamic);