diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2021-03-17 17:03:43 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2021-03-17 17:03:43 +0100 |
| commit | 63fd34ef37a8ba977e6bfcdcb72cd890aafac2a8 (patch) | |
| tree | a2571e2b52dbfc33c1992c35589e6f560868e305 /src/server/completion.odin | |
| parent | a8abe7726ac2b717f0b7e2e1b31c8ec0566d9374 (diff) | |
semantic token fix on package selector, more union completion
Diffstat (limited to 'src/server/completion.odin')
| -rw-r--r-- | src/server/completion.odin | 22 |
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: |