Skip to content

Commit 9e6e769

Browse files
committed
Add sanity checks to checker
1 parent c0f746a commit 9e6e769

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

src/check_decl.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,9 +1171,6 @@ end:;
11711171
// NOTE(bill): Add it to the list of checked entities
11721172
if (e->flags & EntityFlag_Lazy) {
11731173
array_add(&ctx->info->entities, e);
1174-
}
1175-
1176-
if (e->flags & EntityFlag_Lazy) {
11771174
mutex_unlock(&ctx->info->lazy_mutex);
11781175
}
11791176
}

src/checker.cpp

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5014,23 +5014,23 @@ void check_unique_package_names(Checker *c) {
50145014
}
50155015

50165016
void check_add_entities_from_queues(Checker *c) {
5017-
{
5018-
isize cap = c->info.entities.count + c->info.entity_queue.count.load(std::memory_order_relaxed);
5019-
array_reserve(&c->info.entities, cap);
5020-
for (Entity *e; mpmc_dequeue(&c->info.entity_queue, &e); /**/) {
5021-
array_add(&c->info.entities, e);
5022-
}
5017+
isize cap = c->info.entities.count + c->info.entity_queue.count.load(std::memory_order_relaxed);
5018+
array_reserve(&c->info.entities, cap);
5019+
for (Entity *e; mpmc_dequeue(&c->info.entity_queue, &e); /**/) {
5020+
array_add(&c->info.entities, e);
50235021
}
5024-
{
5025-
isize cap = c->info.definitions.count + c->info.definition_queue.count.load(std::memory_order_relaxed);
5026-
array_reserve(&c->info.definitions, cap);
5027-
for (Entity *e; mpmc_dequeue(&c->info.definition_queue, &e); /**/) {
5028-
array_add(&c->info.definitions, e);
5029-
}
5022+
}
5023+
5024+
void check_add_definitions_from_queues(Checker *c) {
5025+
isize cap = c->info.definitions.count + c->info.definition_queue.count.load(std::memory_order_relaxed);
5026+
array_reserve(&c->info.definitions, cap);
5027+
for (Entity *e; mpmc_dequeue(&c->info.definition_queue, &e); /**/) {
5028+
array_add(&c->info.definitions, e);
50305029
}
50315030
}
50325031

50335032

5033+
50345034
void check_parsed_files(Checker *c) {
50355035
#define TIME_SECTION(str) do { debugf("[Section] %s\n", str); if (build_context.show_more_timings) timings_start_section(&global_timings, str_lit(str)); } while (0)
50365036

@@ -5071,6 +5071,7 @@ void check_parsed_files(Checker *c) {
50715071

50725072
TIME_SECTION("add entities from packages");
50735073
check_add_entities_from_queues(c);
5074+
check_add_definitions_from_queues(c);
50745075

50755076
TIME_SECTION("check all global entities");
50765077
check_all_global_entities(c);
@@ -5090,6 +5091,7 @@ void check_parsed_files(Checker *c) {
50905091

50915092
TIME_SECTION("add entities from procedure bodies");
50925093
check_add_entities_from_queues(c);
5094+
check_add_definitions_from_queues(c);
50935095

50945096
TIME_SECTION("check scope usage");
50955097
for_array(i, c->info.files.entries) {
@@ -5132,6 +5134,8 @@ void check_parsed_files(Checker *c) {
51325134
}
51335135

51345136
TIME_SECTION("check for type cycles and inline cycles");
5137+
check_add_definitions_from_queues(c);
5138+
51355139
// NOTE(bill): Check for illegal cyclic type declarations
51365140
for_array(i, c->info.definitions) {
51375141
Entity *e = c->info.definitions[i];
@@ -5190,6 +5194,11 @@ void check_parsed_files(Checker *c) {
51905194
TIME_SECTION("check unique package names");
51915195
check_unique_package_names(c);
51925196

5197+
5198+
TIME_SECTION("sanity checks");
5199+
GB_ASSERT(c->info.entity_queue.count.load(std::memory_order_relaxed) == 0);
5200+
GB_ASSERT(c->info.definition_queue.count.load(std::memory_order_relaxed) == 0);
5201+
51935202
TIME_SECTION("type check finish");
51945203

51955204
#undef TIME_SECTION

0 commit comments

Comments
 (0)