diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2025-07-04 10:24:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-04 10:24:02 +0200 |
| commit | 2efeb965d91c2f8544fda10ac3f16fff44c3716b (patch) | |
| tree | 28eda75b917c3422beafe721c69a6d7c51ee0d61 /src/server/documentation.odin | |
| parent | 56a6c4ef51116f9a7e33b9a4b5fda95baaa0f5a0 (diff) | |
| parent | eac2491844c158cbf70146f3b61a9b82a87b8de5 (diff) | |
Merge pull request #716 from BradLewis/fix/map-key-resolution
Improvements to enum resolution and documentation
Diffstat (limited to 'src/server/documentation.odin')
| -rw-r--r-- | src/server/documentation.odin | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/server/documentation.odin b/src/server/documentation.odin index c0853d7..b52d259 100644 --- a/src/server/documentation.odin +++ b/src/server/documentation.odin @@ -19,10 +19,26 @@ get_signature :: proc(ast_context: ^AstContext, symbol: Symbol) -> string { append_variable_full_name(&sb, ast_context, symbol, pointer_prefix) strings.write_string(&sb, " :: ") } - strings.write_string(&sb, "enum {\n") + + longestNameLen := 0 + for name in v.names { + if len(name) > longestNameLen { + longestNameLen = len(name) + } + } + strings.write_string(&sb, "enum ") + if v.base_type != nil { + build_string_node(v.base_type, &sb, false) + strings.write_string(&sb, " ") + } + strings.write_string(&sb, "{\n") for i in 0 ..< len(v.names) { strings.write_string(&sb, "\t") strings.write_string(&sb, v.names[i]) + if i < len(v.values) && v.values[i] != nil { + fmt.sbprintf(&sb, "%*s= ", longestNameLen - len(v.names[i]) + 1, "") + build_string_node(v.values[i], &sb, false) + } strings.write_string(&sb, ",\n") } strings.write_string(&sb, "}") @@ -211,6 +227,16 @@ get_short_signature :: proc(ast_context: ^AstContext, symbol: Symbol) -> string return "" } +get_enum_field_signature :: proc(value: SymbolEnumValue, index: int) -> string { + sb := strings.builder_make(context.temp_allocator) + fmt.sbprintf(&sb, ".%s", value.names[index]) + if index < len(value.values) && value.values[index] != nil { + strings.write_string(&sb, " = ") + build_string_node(value.values[index], &sb, false) + } + return strings.to_string(sb) +} + write_symbol_type_information :: proc(ast_context: ^AstContext, sb: ^strings.Builder, symbol: Symbol, pointer_prefix: string) { append_type_pkg := false pkg_name := get_pkg_name(ast_context, symbol.type_pkg) |