diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-06-10 21:53:15 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-06-10 22:20:36 -0400 |
| commit | 2a284808585aa062932e5bf162e4facfd5b8cee2 (patch) | |
| tree | c7bcd770f31d0c95da94b52a2c7587a5524ece98 /src/server/analysis.odin | |
| parent | 3f089f4d757e2a705056eb331c74442ab48862aa (diff) | |
Add struct field type to hover information
Diffstat (limited to 'src/server/analysis.odin')
| -rw-r--r-- | src/server/analysis.odin | 16 |
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") |