aboutsummaryrefslogtreecommitdiff
path: root/src/server/completion.odin
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-08-23 09:38:10 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-08-24 08:55:23 -0400
commit0d7f28a8ca38fbdd4baa522ec1caf9316d090d19 (patch)
treef191c7139e18154e556bb8742eb1cc0cafa1e118 /src/server/completion.odin
parente239a9a74e732d91cc3e7e1c4b2dc68da1f2cb4c (diff)
Check types before adding pointer completion
Diffstat (limited to 'src/server/completion.odin')
-rw-r--r--src/server/completion.odin9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 0b00f5b..5d28c3f 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -318,7 +318,7 @@ convert_completion_results :: proc(
}
if s, ok := symbol.(Symbol); ok && (completion_type == .Selector || completion_type == .Identifier) {
- handle_pointers(position_context, result.symbol, s, &item, completion_type)
+ handle_pointers(ast_context, position_context, result.symbol, s, &item, completion_type)
}
if common.config.enable_label_details {
@@ -372,6 +372,7 @@ convert_completion_results :: proc(
@(private = "file")
handle_pointers :: proc(
+ ast_context: ^AstContext,
position_context: ^DocumentPositionContext,
result_symbol: Symbol,
arg_symbol: Symbol,
@@ -384,6 +385,10 @@ handle_pointers :: proc(
}
}
+ if !is_symbol_same_typed(ast_context, arg_symbol, result_symbol, ignore_pointers = true) {
+ return
+ }
+
diff := result_symbol.pointers - arg_symbol.pointers
suffix := ""
prefix := ""
@@ -861,7 +866,7 @@ get_selector_completion :: proc(
completion_item = CompletionItem {
label = fmt.tprintf(".%s", name),
kind = .EnumMember,
- detail = fmt.tprintf("%s.%s", receiver, name),
+ detail = fmt.tprintf("%s.%s", selector.name, name),
additionalTextEdits = remove_edit,
},
},