aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-08-30 19:01:30 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-08-30 19:01:30 -0400
commit16ff934662bc9286549df938d205175d183a2ede (patch)
treea320079abb49e191c49ab560247886103b13da4c /src/server
parentaae20c2190e619715b9f9a55e757d50c2d517cd7 (diff)
When resolving locals, don't resolve all possibilities for overloaded procs
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin11
-rw-r--r--src/server/locals.odin3
2 files changed, 12 insertions, 2 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index 9afdbc2..544ad6e 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -45,6 +45,7 @@ AstContext :: struct {
non_mutable_only: bool, //Only store local value declarations that are non mutable.
overloading: bool,
position_hint: DocumentPositionContextHint,
+ resolving_locals: bool,
}
make_ast_context :: proc(
@@ -621,8 +622,14 @@ resolve_function_overload :: proc(ast_context: ^AstContext, group: ast.Proc_Grou
ast_context.overloading = false
}
- resolve_all_possibilities :=
- ast_context.position_hint == .Completion || ast_context.position_hint == .SignatureHelp || call_expr == nil
+ resolve_all_possibilities: bool
+ if ast_context.resolving_locals {
+ resolve_all_possibilities = false
+ } else {
+ resolve_all_possibilities =
+ ast_context.position_hint == .Completion || ast_context.position_hint == .SignatureHelp || call_expr == nil
+ }
+
call_unnamed_arg_count := 0
if call_expr != nil {
diff --git a/src/server/locals.odin b/src/server/locals.odin
index ac577b1..267a2a2 100644
--- a/src/server/locals.odin
+++ b/src/server/locals.odin
@@ -1026,6 +1026,9 @@ get_locals :: proc(
ast_context: ^AstContext,
document_position: ^DocumentPositionContext,
) {
+ ast_context.resolving_locals = true
+ defer ast_context.resolving_locals = false
+
proc_lit, ok := function.derived.(^ast.Proc_Lit)
if !ok || proc_lit.body == nil {