From 607442b92a47e786a964f491fcac5286258607fb Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 7 Aug 2024 08:22:22 -0700 Subject: [PATCH] fix member lookup rules in new eval ir tree builder --- src/eval/eval_ir.c | 2 +- src/mule/mule_main.cpp | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/eval/eval_ir.c b/src/eval/eval_ir.c index 8f711c0c..92fba2ef 100644 --- a/src/eval/eval_ir.c +++ b/src/eval/eval_ir.c @@ -456,7 +456,7 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr) l_restype_kind == E_TypeKind_LRef || l_restype_kind == E_TypeKind_RRef) { - check_type_key = e_type_unwrap(l_restype); + check_type_key = e_type_unwrap(e_type_direct_from_key(e_type_unwrap(l_restype))); check_type_kind = e_type_kind_from_key(check_type_key); } e_msg_list_concat_in_place(&result.msgs, &l.msgs); diff --git a/src/mule/mule_main.cpp b/src/mule/mule_main.cpp index d8791ca1..86d169fe 100644 --- a/src/mule/mule_main.cpp +++ b/src/mule/mule_main.cpp @@ -252,6 +252,22 @@ struct Has_A_Post_Forward_Reference{ struct Gets_Referenced_Forwardly value; }; +struct TypeWithMemberFunction +{ + int x; + int y; + int z; + char *name; + __declspec(noinline) void SetInfo(int _x, int _y, char *_name) + { + x = _x; + y = _y; + z = 0; + name = _name; + OutputDebugStringA("setting info\n"); + } +}; + static void no_params1(void){ @@ -379,6 +395,9 @@ type_coverage_eval_tests(void){ stks *stks_first = &stks_test[0]; stks *stks_ptr = stks_first + 8; + TypeWithMemberFunction twmf = {0}; + twmf.SetInfo(123, 456, "foobar"); + TestFunction *function = mule_get_module_function("dll_type_eval_tests"); function();