aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-03-27 16:48:51 +0000
committergingerBill <bill@gingerbill.org>2024-03-27 16:48:51 +0000
commitcf9bdc134cf28c9a1720ffe8bdfcd9fa1bdf1543 (patch)
treeb6c4d3520a4267b3a4a55dcad509029905ad165c /src
parent7b387fd3aa9b943929dcb73f669d8151837f0a24 (diff)
Fix #3341
Diffstat (limited to 'src')
-rw-r--r--src/checker.cpp6
-rw-r--r--src/types.cpp7
2 files changed, 10 insertions, 3 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 135a1ab7b..100b53315 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -1236,9 +1236,9 @@ gb_internal void init_universal(void) {
// intrinsics types for objective-c stuff
{
- t_objc_object = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_object"), alloc_type_struct());
- t_objc_selector = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_selector"), alloc_type_struct());
- t_objc_class = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_class"), alloc_type_struct());
+ t_objc_object = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_object"), alloc_type_struct_complete());
+ t_objc_selector = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_selector"), alloc_type_struct_complete());
+ t_objc_class = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_class"), alloc_type_struct_complete());
t_objc_id = alloc_type_pointer(t_objc_object);
t_objc_SEL = alloc_type_pointer(t_objc_selector);
diff --git a/src/types.cpp b/src/types.cpp
index ebe6271f2..256c654ac 100644
--- a/src/types.cpp
+++ b/src/types.cpp
@@ -1061,6 +1061,13 @@ gb_internal Type *alloc_type_struct() {
return t;
}
+gb_internal Type *alloc_type_struct_complete() {
+ Type *t = alloc_type(Type_Struct);
+ wait_signal_set(&t->Struct.fields_wait_signal);
+ return t;
+}
+
+
gb_internal Type *alloc_type_union() {
Type *t = alloc_type(Type_Union);
return t;