diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-07 21:58:23 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-09-07 22:21:33 -0400 |
| commit | a3ebb67fd1893881a7e88021341f712461fc3a79 (patch) | |
| tree | 8c779ada9aacd5516fbd3c48bbe53e5cdbfc256c /src/server | |
| parent | 19ee061feef6f74b54a4ca5e36a8e3711907935b (diff) | |
Parse fields correctly
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/analysis.odin | 4 | ||||
| -rw-r--r-- | src/server/semantic_tokens.odin | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 22324f4..04c5f9e 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -2644,6 +2644,7 @@ resolve_container_allocator_location :: proc(ast_context: ^AstContext, container for name, i in v.names { if name == "allocator" { symbol.range = v.ranges[i] + symbol.type = .Field return symbol, true } } @@ -2690,18 +2691,21 @@ resolve_symbol_selector :: proc( for name, i in v.names { if strings.compare(name, field) == 0 { symbol.range = v.ranges[i] + symbol.type = .EnumMember } } case SymbolStructValue: for name, i in v.names { if strings.compare(name, field) == 0 { symbol.range = v.ranges[i] + symbol.type = .Field } } case SymbolBitFieldValue: for name, i in v.names { if strings.compare(name, field) == 0 { symbol.range = v.ranges[i] + symbol.type = .Field } } case SymbolPackageValue: diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin index 703a0cb..7d6b653 100644 --- a/src/server/semantic_tokens.odin +++ b/src/server/semantic_tokens.odin @@ -564,6 +564,8 @@ visit_ident :: proc( } case .EnumMember: write_semantic_node(builder, ident, .EnumMember, modifiers) + case .Field: + write_semantic_node(builder, ident, .Property, modifiers) case: /* type idents */ switch v in symbol.value { |