|
@@ -999,6 +999,17 @@ gb_internal Type *alloc_type_pointer_to_multi_pointer(Type *ptr) {
|
|
|
return original_type;
|
|
|
}
|
|
|
|
|
|
+gb_internal Type *alloc_type_multi_pointer_to_pointer(Type *ptr) {
|
|
|
+ Type *original_type = ptr;
|
|
|
+ ptr = base_type(ptr);
|
|
|
+ if (ptr->kind == Type_MultiPointer) {
|
|
|
+ return alloc_type_pointer(ptr->MultiPointer.elem);
|
|
|
+ } else if (ptr->kind != Type_Pointer) {
|
|
|
+ GB_PANIC("Invalid type: %s", type_to_string(original_type));
|
|
|
+ }
|
|
|
+ return original_type;
|
|
|
+}
|
|
|
+
|
|
|
gb_internal Type *alloc_type_array(Type *elem, i64 count, Type *generic_count = nullptr) {
|
|
|
if (generic_count != nullptr) {
|
|
|
Type *t = alloc_type(Type_Array);
|