From be6fe57a48425aa717a1bbbeeb7c33016038c442 Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sun, 29 Jun 2025 21:52:02 -0400 Subject: Add all procedure group definitions to `goto definition` on an overloaded procedure --- src/server/analysis.odin | 8 +++++--- src/server/definition.odin | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) (limited to 'src/server') 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 { -- cgit v1.2.3