diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-06-29 21:52:02 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-06-29 21:52:53 -0400 |
| commit | be6fe57a48425aa717a1bbbeeb7c33016038c442 (patch) | |
| tree | 817e32b9bc3fbaafcb38c6e25086b8e24eb0314a /src/server | |
| parent | 386ba7d4ca2adf72800dd64f338dcc2ff4b7572d (diff) | |
Add all procedure group definitions to `goto definition` on an overloaded procedure
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/analysis.odin | 8 | ||||
| -rw-r--r-- | src/server/definition.odin | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 0aa1bba..cd16259 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1966,10 +1966,12 @@ resolve_symbol_return :: proc(ast_context: ^AstContext, symbol: Symbol, ok := tr #partial switch &v in symbol.value { case SymbolProcedureGroupValue: - if symbol, ok := resolve_function_overload(ast_context, v.group.derived.(^ast.Proc_Group)^); ok { - return symbol, true + if s, ok := resolve_function_overload(ast_context, v.group.derived.(^ast.Proc_Group)^); ok { + s.range = symbol.range + s.uri = symbol.uri + return s, true } else { - return symbol, false + return s, false } case SymbolProcedureValue: if v.generic { diff --git a/src/server/definition.odin b/src/server/definition.odin index fbcbcf8..ffd6cc0 100644 --- a/src/server/definition.odin +++ b/src/server/definition.odin @@ -131,6 +131,14 @@ get_definition_location :: proc(document: ^Document, position: common.Position) &ast_context, position_context.identifier.derived.(^ast.Ident)^, ); ok { + if v, ok := resolved.value.(SymbolAggregateValue); ok { + for symbol in v.symbols { + append(&locations, common.Location { + range = symbol.range, + uri = symbol.uri, + }) + } + } location.range = resolved.range uri = resolved.uri } else { |