aboutsummaryrefslogtreecommitdiff
path: root/src/server/hover.odin
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-06-10 21:53:15 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-06-10 22:20:36 -0400
commit2a284808585aa062932e5bf162e4facfd5b8cee2 (patch)
treec7bcd770f31d0c95da94b52a2c7587a5524ece98 /src/server/hover.odin
parent3f089f4d757e2a705056eb331c74442ab48862aa (diff)
Add struct field type to hover information
Diffstat (limited to 'src/server/hover.odin')
-rw-r--r--src/server/hover.odin14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/server/hover.odin b/src/server/hover.odin
index 3c602c1..89b75eb 100644
--- a/src/server/hover.odin
+++ b/src/server/hover.odin
@@ -125,9 +125,11 @@ get_hover_information :: proc(document: ^Document, position: common.Position) ->
&ast_context,
position_context.value_decl.names[0],
); ok {
+ symbol.type_name = symbol.name
+ symbol.type_pkg = symbol.pkg
symbol.pkg = struct_symbol.name
symbol.name = identifier.name
- symbol.signature = get_signature(&ast_context, field.type.derived, symbol)
+ symbol.signature = get_signature(&ast_context, symbol)
hover.contents = write_hover_content(&ast_context, symbol)
return hover, true, true
}
@@ -188,7 +190,7 @@ get_hover_information :: proc(document: ^Document, position: common.Position) ->
if position_in_node(base, position_context.position) {
if resolved, ok := resolve_type_identifier(&ast_context, ident); ok {
- resolved.signature = get_signature(&ast_context, &ident, resolved)
+ resolved.signature = get_signature(&ast_context, resolved)
resolved.name = ident.name
if resolved.type == .Variable {
@@ -237,9 +239,11 @@ get_hover_information :: proc(document: ^Document, position: common.Position) ->
for name, i in v.names {
if name == field {
if symbol, ok := resolve_type_expression(&ast_context, v.types[i]); ok {
+ symbol.type_name = symbol.name
+ symbol.type_pkg = symbol.pkg
symbol.name = name
symbol.pkg = selector.name
- symbol.signature = get_signature(&ast_context, v.types[i].derived, symbol)
+ symbol.signature = get_signature(&ast_context, symbol)
hover.contents = write_hover_content(&ast_context, symbol)
return hover, true, true
}
@@ -269,7 +273,7 @@ get_hover_information :: proc(document: ^Document, position: common.Position) ->
}
}
if resolved, ok := resolve_type_identifier(&ast_context, ident^); ok {
- resolved.signature = get_signature(&ast_context, ident, resolved)
+ resolved.signature = get_signature(&ast_context, resolved)
resolved.name = ident.name
if resolved.type == .Variable {
@@ -331,7 +335,7 @@ get_hover_information :: proc(document: ^Document, position: common.Position) ->
}
if resolved, ok := resolve_type_identifier(&ast_context, ident); ok {
- resolved.signature = get_signature(&ast_context, &ident, resolved)
+ resolved.signature = get_signature(&ast_context, resolved)
resolved.name = ident.name
if resolved.type == .Variable {