diff --git a/tools/odin-html-docs/odin_html_docs_main.odin b/tools/odin-html-docs/odin_html_docs_main.odin
index 79e9e4695..15e0ce074 100644
--- a/tools/odin-html-docs/odin_html_docs_main.odin
+++ b/tools/odin-html-docs/odin_html_docs_main.odin
@@ -528,8 +528,8 @@ write_type :: proc(using writer: ^Type_Writer, type: doc.Type, flags: Write_Type
io.write_byte(w, '\n')
}
}
- calc_name_width :: proc(type_entites: []doc.Entity_Index) -> (name_width: int) {
- for entity_index in type_entites {
+ calc_name_width :: proc(type_entities: []doc.Entity_Index) -> (name_width: int) {
+ for entity_index in type_entities {
e := &entities[entity_index]
name := str(e.name)
name_width = max(len(name), name_width)
@@ -538,7 +538,7 @@ write_type :: proc(using writer: ^Type_Writer, type: doc.Type, flags: Write_Type
}
- type_entites := array(type.entities)
+ type_entities := array(type.entities)
type_types := array(type.types)
switch type.kind {
case .Invalid:
@@ -551,7 +551,7 @@ write_type :: proc(using writer: ^Type_Writer, type: doc.Type, flags: Write_Type
fmt.wprintf(w, `%s`, str(type.name))
}
case .Named:
- e := entities[type_entites[0]]
+ e := entities[type_entities[0]]
name := str(type.name)
tn_pkg := files[e.pos.file].pkg
@@ -616,19 +616,30 @@ write_type :: proc(using writer: ^Type_Writer, type: doc.Type, flags: Write_Type
io.write_string(w, custom_align)
}
io.write_string(w, " {")
- if len(type_entites) != 0 {
+
+ tags := array(type.tags)
+
+ if len(type_entities) != 0 {
do_newline(writer, flags)
indent += 1
- name_width := calc_name_width(type_entites)
+ name_width := calc_name_width(type_entities)
- for entity_index, i in type_entites {
+ for entity_index, i in type_entities {
e := &entities[entity_index]
next_entity: ^doc.Entity = nil
- if i+1 < len(type_entites) {
- next_entity = &entities[type_entites[i+1]]
+ if i+1 < len(type_entities) {
+ next_entity = &entities[type_entities[i+1]]
}
do_indent(writer, flags)
write_param_entity(writer, e, next_entity, flags, name_width)
+
+ if len(tags) == len(type_entities) {
+ if tag := str(tags[i]); tag != "" {
+ io.write_byte(w, ' ')
+ io.write_quoted_string(w, tag)
+ }
+ }
+
io.write_byte(w, ',')
do_newline(writer, flags)
}
@@ -670,9 +681,9 @@ write_type :: proc(using writer: ^Type_Writer, type: doc.Type, flags: Write_Type
do_newline(writer, flags)
indent += 1
- name_width := calc_name_width(type_entites)
+ name_width := calc_name_width(type_entities)
- for entity_index in type_entites {
+ for entity_index in type_entities {
e := &entities[entity_index]
name := str(e.name)
@@ -693,19 +704,19 @@ write_type :: proc(using writer: ^Type_Writer, type: doc.Type, flags: Write_Type
do_indent(writer, flags)
io.write_string(w, "}")
case .Tuple:
- if len(type_entites) == 0 {
+ if len(type_entities) == 0 {
return
}
- require_parens := (.Is_Results in flags) && (len(type_entites) > 1 || !is_entity_blank(type_entites[0]))
+ require_parens := (.Is_Results in flags) && (len(type_entities) > 1 || !is_entity_blank(type_entities[0]))
if require_parens { io.write_byte(w, '(') }
- for entity_index, i in type_entites {
+ for entity_index, i in type_entities {
if i > 0 {
io.write_string(w, ", ")
}
e := &entities[entity_index]
next_entity: ^doc.Entity = nil
- if i+1 < len(type_entites) {
- next_entity = &entities[type_entites[i+1]]
+ if i+1 < len(type_entities) {
+ next_entity = &entities[type_entities[i+1]]
}
write_param_entity(writer, e, next_entity, flags)
}