From cf9bdc134cf28c9a1720ffe8bdfcd9fa1bdf1543 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 27 Mar 2024 16:48:51 +0000 Subject: [PATCH] Fix #3341 --- src/checker.cpp | 6 +++--- src/types.cpp | 7 +++++++ 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;