aboutsummaryrefslogtreecommitdiff
path: root/src/server/completion.odin
diff options
context:
space:
mode:
authorHarold Brenes <harold@hbrenes.com>2025-04-29 23:23:11 -0400
committerHarold Brenes <harold@hbrenes.com>2025-04-29 23:24:57 -0400
commit93accc8b78bc6406e137ced082b0e09ec04a8a83 (patch)
tree56b0a3af596130abfc979edc0074f6110c6f689d /src/server/completion.odin
parentd12ee2ef83989d0fcf71b20a0305111344a69b7d (diff)
Fix bit_set implicit selector not autocompleting for types in different packages than the callee
Diffstat (limited to 'src/server/completion.odin')
-rw-r--r--src/server/completion.odin24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 97d956d..7383785 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -731,6 +731,7 @@ get_implicit_completion :: proc(
if position_context.comp_lit != nil {
if bitset_symbol, ok := resolve_type_expression(ast_context, position_context.value_decl.type); ok {
+ set_ast_package_from_symbol_scoped(ast_context, bitset_symbol)
if _enum_value, ok := unwrap_bitset(ast_context, bitset_symbol); ok {
enum_value = _enum_value
}
@@ -949,19 +950,22 @@ get_implicit_completion :: proc(
return
}
}
- } else if s, ok := unwrap_bitset(ast_context, comp_symbol); ok {
- for enum_name in s.names {
- item := CompletionItem {
- label = enum_name,
- kind = .EnumMember,
- detail = enum_name,
+ } else {
+ set_ast_package_set_scoped(ast_context, comp_symbol.pkg)
+ if s, ok := unwrap_bitset(ast_context, comp_symbol); ok {
+ for enum_name in s.names {
+ item := CompletionItem {
+ label = enum_name,
+ kind = .EnumMember,
+ detail = enum_name,
+ }
+
+ append(&items, item)
}
- append(&items, item)
+ list.items = items[:]
+ return
}
-
- list.items = items[:]
- return
}
}
}