From 9623d701e92725401a221da9cca0e33d1a8a4635 Mon Sep 17 00:00:00 2001 From: Damian Tarnawski Date: Sat, 27 Apr 2024 22:53:13 +0200 Subject: Fix getting wrong symbol for selectors --- src/server/semantic_tokens.odin | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/server') 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 } -- cgit v1.2.3