aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorBradley Lewis <22850972+BradLewis@users.noreply.github.com>2025-08-20 18:31:45 -0400
committerGitHub <noreply@github.com>2025-08-20 18:31:45 -0400
commit52839df5fa441be5cf1cd0fb0e6b43cb5c6560c6 (patch)
tree137baabe28d900e5f85a4c9e5e08ff1bfbd398ed /src/server
parent2aa0e380f2fc28a464c1a62d7cdc742b12783125 (diff)
parentaec4e645f21271ecc4c90a65b56ea702fa88aba8 (diff)
Merge pull request #921 from BradLewis/fix/soa-pointer-hover
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin6
-rw-r--r--src/server/hover.odin9
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)