aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-06-29 21:52:02 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-06-29 21:52:53 -0400
commitbe6fe57a48425aa717a1bbbeeb7c33016038c442 (patch)
tree817e32b9bc3fbaafcb38c6e25086b8e24eb0314a /src/server
parent386ba7d4ca2adf72800dd64f338dcc2ff4b7572d (diff)
Add all procedure group definitions to `goto definition` on an overloaded procedure
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin8
-rw-r--r--src/server/definition.odin8
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 {