aboutsummaryrefslogtreecommitdiff
path: root/src/server/completion.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/completion.odin')
-rw-r--r--src/server/completion.odin22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 40f633c..e19bd0a 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -242,12 +242,22 @@ get_selector_completion :: proc (ast_context: ^AstContext, position_context: ^Do
case index.SymbolUnionValue:
list.isIncomplete = false;
- for name in v.names {
- symbol: index.Symbol;
- symbol.name = fmt.aprintf("(%v)", name);
- symbol.pkg = selector.name;
- symbol.type = .EnumMember;
- append(&symbols, symbol);
+ for name, i in v.names {
+
+ if symbol, ok := resolve_type_expression(ast_context, v.types[i]); ok {
+
+ if symbol.pkg == ast_context.document_package {
+ symbol.name = fmt.aprintf("(%v)", name);
+ }
+
+ else {
+ symbol.name = fmt.aprintf("(%v.%v)", path.base(symbol.pkg, false, context.temp_allocator), name);
+ }
+
+ symbol.pkg = selector.name;
+ symbol.type = .EnumMember;
+ append(&symbols, symbol);
+ }
}
case index.SymbolEnumValue: