diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-08-20 15:25:54 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-08-20 15:29:52 -0400 |
| commit | aec4e645f21271ecc4c90a65b56ea702fa88aba8 (patch) | |
| tree | 137baabe28d900e5f85a4c9e5e08ff1bfbd398ed /src | |
| parent | 2aa0e380f2fc28a464c1a62d7cdc742b12783125 (diff) | |
Correct hover info for soa pointers
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/analysis.odin | 6 | ||||
| -rw-r--r-- | src/server/hover.odin | 9 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 3b7b87e..44245e1 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1336,14 +1336,16 @@ resolve_soa_selector_field :: proc( return {}, false } + ast_context.use_locals = true if symbol, ok := resolve_type_expression(ast_context, expr); ok { if v, ok := symbol.value.(SymbolStructValue); ok { for n, i in v.names { if n == name { if .SoaPointer in selector.flags { if resolved, ok := resolve_type_expression(ast_context, v.types[i]); ok { - symbol.value = resolved.value - symbol.pkg = symbol.name + resolved.pkg = symbol.name + resolved.range = v.ranges[i] + return resolved, ok } else { return {}, false } diff --git a/src/server/hover.odin b/src/server/hover.odin index 03cdedf..bf64967 100644 --- a/src/server/hover.odin +++ b/src/server/hover.odin @@ -354,11 +354,11 @@ get_hover_information :: proc(document: ^Document, position: common.Position) -> } } case SymbolSliceValue: - return get_soa_hover(&ast_context, selector, v.expr, nil, field) + return get_soa_field_hover(&ast_context, selector, v.expr, nil, field) case SymbolDynamicArrayValue: - return get_soa_hover(&ast_context, selector, v.expr, nil, field) + return get_soa_field_hover(&ast_context, selector, v.expr, nil, field) case SymbolFixedArrayValue: - return get_soa_hover(&ast_context, selector, v.expr, v.len, field) + return get_soa_field_hover(&ast_context, selector, v.expr, v.len, field) } } else if position_context.implicit_selector_expr != nil { implicit_selector := position_context.implicit_selector_expr @@ -439,7 +439,7 @@ get_hover_information :: proc(document: ^Document, position: common.Position) -> } @(private = "file") -get_soa_hover :: proc( +get_soa_field_hover :: proc( ast_context: ^AstContext, selector: Symbol, expr: ^ast.Expr, @@ -457,6 +457,7 @@ get_soa_hover :: proc( if selector.name != "" { symbol.pkg = selector.name } + symbol.name = field build_documentation(ast_context, &symbol, false) hover: Hover hover.contents = write_hover_content(ast_context, symbol) |