diff options
| author | Bradley Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-11-13 15:54:54 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-13 15:54:54 -0500 |
| commit | 18f4b195d9c29f17c65aba34e1e1d1058b0e364b (patch) | |
| tree | 12f43e94d47f43ad9cfbd73aec30c6f4aa5f8f23 /src/server/analysis.odin | |
| parent | 2b776a5d94b5c11fd2998e07a3d294f506ad094d (diff) | |
| parent | 72cdc7e38a57782209148a6dbf6f6e1aa2598916 (diff) | |
Merge pull request #1180 from BradLewis/fix/named-call-arg-types
Fix/named call arg types
Diffstat (limited to 'src/server/analysis.odin')
| -rw-r--r-- | src/server/analysis.odin | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index aa19e56..f724345 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -2744,13 +2744,25 @@ resolve_type_location_proc_param_name :: proc( reset_ast_context(ast_context) if value, ok := call_symbol.value.(SymbolProcedureValue); ok { - if symbol, ok := resolve_type_expression(ast_context, position_context.field_value.value); ok { - symbol.type_pkg = symbol.pkg - symbol.type_name = symbol.name - symbol.pkg = call_symbol.name - symbol.name = ident.name - symbol.type = .Field - return symbol, true + for arg in value.arg_types { + for name_expr in arg.names { + if name, ok := name_expr.derived.(^ast.Ident); ok { + if name.name == ident.name { + type := arg.type + if type == nil { + type = arg.default_value + } + if symbol, ok := resolve_type_expression(ast_context, type); ok { + symbol.type_pkg = symbol.pkg + symbol.type_name = symbol.name + symbol.pkg = call_symbol.name + symbol.name = ident.name + symbol.type = .Field + return symbol, true + } + } + } + } } } return call_symbol, false |