aboutsummaryrefslogtreecommitdiff
path: root/src/server/documentation.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/documentation.odin')
-rw-r--r--src/server/documentation.odin28
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)