aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2025-06-30 12:21:47 +0200
committerGitHub <noreply@github.com>2025-06-30 12:21:47 +0200
commit2be7985b87186ac70baa7fe9acf048d9326e9101 (patch)
tree45000ad9e05684bade53db336085da531ada3e47 /src
parent01c10a0b8d22de05cf608790e441660f4024d3fd (diff)
parentbe6fe57a48425aa717a1bbbeeb7c33016038c442 (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.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 {