diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-07-20 08:29:14 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-07-20 08:29:14 -0400 |
| commit | df1300cedea5bc1d942ba214e88b56b5c8b1d45d (patch) | |
| tree | 3d978628bbb8983706919ca11d321ba0b5e3befe /src | |
| parent | f6246e58a9f437fabff9a90ec46ebda4959ed00b (diff) | |
Fix issue resolving overloaded procs that contained union parameters
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/analysis.odin | 17 |
1 files changed, 15 insertions, 2 deletions
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 } |