diff options
| author | Damian Tarnawski <gthetarnav@gmail.com> | 2024-04-27 22:53:13 +0200 |
|---|---|---|
| committer | Damian Tarnawski <gthetarnav@gmail.com> | 2024-04-27 22:53:13 +0200 |
| commit | 9623d701e92725401a221da9cca0e33d1a8a4635 (patch) | |
| tree | 9479084daa208f359afb151ab4676e141010b6cf /src/server | |
| parent | 0ca38c9f44b47c87ae9e810087eabec0f01c0d9c (diff) | |
Fix getting wrong symbol for selectors
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/semantic_tokens.odin | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin index bd95d48..d2240f8 100644 --- a/src/server/semantic_tokens.odin +++ b/src/server/semantic_tokens.odin @@ -219,7 +219,7 @@ visit_node :: proc(node: ^ast.Node, builder: ^SemanticTokenBuilder) { case ^Ellipsis: visit_node(n.expr, builder) case ^Ident: - visit_ident(n, {}, builder) + visit_ident(n, n, {}, builder) case ^Selector_Expr: visit_selector(cast(^Selector_Expr)node, builder) builder.selector = false @@ -403,7 +403,7 @@ visit_value_decl :: proc(value_decl: ast.Value_Decl, builder: ^SemanticTokenBuil for name in value_decl.names { ident := name.derived.(^Ident) or_continue - visit_ident(ident, modifiers, builder) + visit_ident(ident, ident, modifiers, builder) } visit_node(value_decl.type, builder) @@ -498,17 +498,18 @@ visit_selector :: proc(selector: ^ast.Selector_Expr, builder: ^SemanticTokenBuil builder.selector = true } - visit_ident(selector.field, {}, builder) + visit_ident(selector.field, selector, {}, builder) } visit_ident :: proc( ident: ^ast.Ident, + symbol_ptr: rawptr, modifiers: SemanticTokenModifiers, builder: ^SemanticTokenBuilder, ) { using ast - symbol_and_node, in_symbols := builder.symbols[cast(uintptr)ident] + symbol_and_node, in_symbols := builder.symbols[cast(uintptr)symbol_ptr] if !in_symbols { return } |