From df1300cedea5bc1d942ba214e88b56b5c8b1d45d Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sun, 20 Jul 2025 08:29:14 -0400 Subject: Fix issue resolving overloaded procs that contained union parameters --- src/server/analysis.odin | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/server') diff --git a/src/server/analysis.odin b/src/server/analysis.odin index b7564b1..3f900ff 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -772,8 +772,21 @@ resolve_function_overload :: proc(ast_context: ^AstContext, group: ast.Proc_Grou if !ok { break next_fn } - - if !is_symbol_same_typed(ast_context, call_symbol, arg_symbol, proc_arg.flags) { + + if value, ok := arg_symbol.value.(SymbolUnionValue); ok { + found := false + for variant in value.types { + if symbol, ok := resolve_type_expression(ast_context, variant); ok { + if is_symbol_same_typed(ast_context, call_symbol, symbol, proc_arg.flags) { + found = true + break + } + } + } + if !found { + break next_fn + } + } else if !is_symbol_same_typed(ast_context, call_symbol, arg_symbol, proc_arg.flags) { break next_fn } -- cgit v1.2.3