diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2025-06-30 12:21:47 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-30 12:21:47 +0200 |
| commit | 2be7985b87186ac70baa7fe9acf048d9326e9101 (patch) | |
| tree | 45000ad9e05684bade53db336085da531ada3e47 /src | |
| parent | 01c10a0b8d22de05cf608790e441660f4024d3fd (diff) | |
| parent | be6fe57a48425aa717a1bbbeeb7c33016038c442 (diff) | |
Merge pull request #697 from BradLewis/feat/goto-definition-improvements
Add all procedure group definitions to `goto definition` on an overloaded procedure
Diffstat (limited to 'src')
| -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 { |