aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-06-06 23:55:48 +0100
committergingerBill <bill@gingerbill.org>2024-06-06 23:55:48 +0100
commit7044a7d77650e922a66f3bfe99711f3ed370e1ba (patch)
treec31f6413c08b69f6598dbe406c6cb1e5efec2642 /src/checker.cpp
parent08612423b9afffb7499d8db2c69715df1627bd50 (diff)
Try to fix a possible race condition with polymorphic record parameters
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 8a58bb425..e90509c1f 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -2031,6 +2031,7 @@ gb_internal void add_type_info_type_internal(CheckerContext *c, Type *t) {
} else {
add_type_info_type_internal(c, t_type_info_ptr);
}
+ wait_for_record_polymorphic_params(bt);
add_type_info_type_internal(c, bt->Union.polymorphic_params);
for_array(i, bt->Union.variants) {
add_type_info_type_internal(c, bt->Union.variants[i]);
@@ -2063,6 +2064,7 @@ gb_internal void add_type_info_type_internal(CheckerContext *c, Type *t) {
}
}
}
+ wait_for_record_polymorphic_params(bt);
add_type_info_type_internal(c, bt->Struct.polymorphic_params);
for_array(i, bt->Struct.fields) {
Entity *f = bt->Struct.fields[i];
@@ -2292,6 +2294,7 @@ gb_internal void add_min_dep_type_info(Checker *c, Type *t) {
} else {
add_min_dep_type_info(c, t_type_info_ptr);
}
+ wait_for_record_polymorphic_params(bt);
add_min_dep_type_info(c, bt->Union.polymorphic_params);
for_array(i, bt->Union.variants) {
add_min_dep_type_info(c, bt->Union.variants[i]);
@@ -2321,6 +2324,7 @@ gb_internal void add_min_dep_type_info(Checker *c, Type *t) {
}
}
}
+ wait_for_record_polymorphic_params(bt);
add_min_dep_type_info(c, bt->Struct.polymorphic_params);
for_array(i, bt->Struct.fields) {
Entity *f = bt->Struct.fields[i];