aboutsummaryrefslogtreecommitdiff
path: root/src/server/completion.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2021-03-17 17:03:43 +0100
committerDanielGavin <danielgavin5@hotmail.com>2021-03-17 17:03:43 +0100
commit63fd34ef37a8ba977e6bfcdcb72cd890aafac2a8 (patch)
treea2571e2b52dbfc33c1992c35589e6f560868e305 /src/server/completion.odin
parenta8abe7726ac2b717f0b7e2e1b31c8ec0566d9374 (diff)
semantic token fix on package selector, more union completion
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: