aboutsummaryrefslogtreecommitdiff
path: root/src/server/analysis.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/analysis.odin
parent3f089f4d757e2a705056eb331c74442ab48862aa (diff)
Add struct field type to hover information
Diffstat (limited to 'src/server/analysis.odin')
-rw-r--r--src/server/analysis.odin16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index f25250b..5659839 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -2328,7 +2328,6 @@ get_using_packages :: proc(ast_context: ^AstContext) -> []string {
}
get_symbol_pkg_name :: proc(ast_context: ^AstContext, symbol: Symbol) -> string {
-
name := path.base(symbol.pkg, false, context.temp_allocator)
for imp in ast_context.imports {
@@ -3822,7 +3821,6 @@ append_variable_full_name :: proc(
get_signature :: proc(
ast_context: ^AstContext,
- ident: ast.Any_Node,
symbol: Symbol,
was_variable := false,
short_signature := false,
@@ -3889,6 +3887,16 @@ get_signature :: proc(
builder := strings.builder_make(ast_context.allocator)
if is_variable {
append_variable_full_name(&builder, ast_context, symbol, pointer_prefix)
+ } else if symbol.type_name != "" {
+ if symbol.type_pkg == "" {
+ fmt.sbprintf(&builder, "%s%s :: ", pointer_prefix, symbol.type_name)
+ } else {
+ // TODO: make this function just take a string
+ symbol := symbol
+ symbol.pkg = symbol.type_pkg
+ pkg_name := get_symbol_pkg_name(ast_context, symbol)
+ fmt.sbprintf(&builder, "%s%s.%s :: ", pointer_prefix, pkg_name, symbol.type_name)
+ }
}
longestNameLen := 0
for name in v.names {
@@ -3896,6 +3904,10 @@ get_signature :: proc(
longestNameLen = len(name)
}
}
+ if len(v.names) == 0 {
+ strings.write_string(&builder, "struct {}")
+ return strings.to_string(builder)
+ }
strings.write_string(&builder, "struct {\n")
for i in 0 ..< len(v.names) {
strings.write_string(&builder, "\t")