aboutsummaryrefslogtreecommitdiff
path: root/src/docs_writer.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-08-14 13:02:23 +0100
committergingerBill <bill@gingerbill.org>2024-08-14 13:02:23 +0100
commit324d9c228488aa90b8eadd986a5a460025ab3af3 (patch)
tree313a3b88e89b7d5345b7489859ede80e1c64b0f1 /src/docs_writer.cpp
parentc98c95fcf03d1c5d2e3cdf4df489e455a727fa1c (diff)
Fix doc writer bug caused by using an iterator rather than a for loop
Diffstat (limited to 'src/docs_writer.cpp')
-rw-r--r--src/docs_writer.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/docs_writer.cpp b/src/docs_writer.cpp
index ad8d9d245..835dfdff1 100644
--- a/src/docs_writer.cpp
+++ b/src/docs_writer.cpp
@@ -829,7 +829,6 @@ gb_internal OdinDocEntityIndex odin_doc_add_entity(OdinDocWriter *w, Entity *e)
OdinDocEntityIndex doc_entity_index = odin_doc_write_item(w, &w->entities, &doc_entity, &dst);
map_set(&w->entity_cache, e, doc_entity_index);
-
Ast *type_expr = nullptr;
Ast *init_expr = nullptr;
Ast *decl_node = nullptr;
@@ -997,7 +996,8 @@ gb_internal void odin_doc_update_entities(OdinDocWriter *w) {
}
}
- for (auto const &entry : w->entity_cache) {
+ for (u32 i = 0; i < w->entity_cache.count; i++) {
+ auto entry = w->entity_cache.entries[i];
Entity *e = entry.key;
OdinDocEntityIndex entity_index = entry.value;
OdinDocTypeIndex type_index = odin_doc_type(w, e->type);
@@ -1007,6 +1007,9 @@ gb_internal void odin_doc_update_entities(OdinDocWriter *w) {
switch (e->kind) {
case Entity_Variable:
+ if (w->state == OdinDocWriterState_Writing) {
+ GB_ASSERT(type_index != 0);
+ }
foreign_library = odin_doc_add_entity(w, e->Variable.foreign_library);
break;
case Entity_Procedure:
@@ -1026,8 +1029,17 @@ gb_internal void odin_doc_update_entities(OdinDocWriter *w) {
break;
}
+ if (w->state == OdinDocWriterState_Preparing) {
+ GB_ASSERT(entity_index == 0);
+ } else {
+ GB_ASSERT(entity_index != 0);
+ }
+
OdinDocEntity *dst = odin_doc_get_item(w, &w->entities, entity_index);
if (dst) {
+ if (dst->kind == OdinDocEntity_Variable) {
+ GB_ASSERT(type_index != 0);
+ }
dst->type = type_index;
dst->foreign_library = foreign_library;
dst->grouped_entities = grouped_entities;