diff options
| author | Ginger Bill <bill@gingerbill.org> | 2017-04-28 11:01:46 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2017-04-28 11:01:46 +0100 |
| commit | 99125dc743b3f8c073fa43368b7f43c385a96a0f (patch) | |
| tree | 0edd34beff3226901dbd32ec9ac66533cbb683e0 /src/checker.c | |
| parent | b78e970698cc154474c3c6a8b49214f9e3d4dfe7 (diff) | |
Fix issue #51; begin work on `atomic` types
Diffstat (limited to 'src/checker.c')
| -rw-r--r-- | src/checker.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/checker.c b/src/checker.c index 9d0d8aa2c..d61e33633 100644 --- a/src/checker.c +++ b/src/checker.c @@ -994,6 +994,10 @@ void add_type_info_type(Checker *c, Type *t) { add_type_info_type(c, bt->Pointer.elem); break; + case Type_Atomic: + add_type_info_type(c, bt->Atomic.elem); + break; + case Type_Array: add_type_info_type(c, bt->Array.elem); add_type_info_type(c, make_type_pointer(c->allocator, bt->Array.elem)); @@ -1175,7 +1179,7 @@ void init_preload(Checker *c) { - if (record->variant_count != 21) { + if (record->variant_count != 22) { compiler_error("Invalid `Type_Info` layout"); } t_type_info_named = record->variants[ 1]->type; @@ -1187,27 +1191,29 @@ void init_preload(Checker *c) { t_type_info_boolean = record->variants[ 7]->type; t_type_info_any = record->variants[ 8]->type; t_type_info_pointer = record->variants[ 9]->type; - t_type_info_procedure = record->variants[10]->type; - t_type_info_array = record->variants[11]->type; - t_type_info_dynamic_array = record->variants[12]->type; - t_type_info_slice = record->variants[13]->type; - t_type_info_vector = record->variants[14]->type; - t_type_info_tuple = record->variants[15]->type; - t_type_info_struct = record->variants[16]->type; - t_type_info_raw_union = record->variants[17]->type; - t_type_info_union = record->variants[18]->type; - t_type_info_enum = record->variants[19]->type; - t_type_info_map = record->variants[20]->type; + t_type_info_atomic = record->variants[10]->type; + t_type_info_procedure = record->variants[11]->type; + t_type_info_array = record->variants[12]->type; + t_type_info_dynamic_array = record->variants[13]->type; + t_type_info_slice = record->variants[14]->type; + t_type_info_vector = record->variants[15]->type; + t_type_info_tuple = record->variants[16]->type; + t_type_info_struct = record->variants[17]->type; + t_type_info_raw_union = record->variants[18]->type; + t_type_info_union = record->variants[19]->type; + t_type_info_enum = record->variants[20]->type; + t_type_info_map = record->variants[21]->type; t_type_info_named_ptr = make_type_pointer(c->allocator, t_type_info_named); t_type_info_integer_ptr = make_type_pointer(c->allocator, t_type_info_integer); t_type_info_float_ptr = make_type_pointer(c->allocator, t_type_info_float); t_type_info_complex_ptr = make_type_pointer(c->allocator, t_type_info_complex); - t_type_info_quaternion_ptr = make_type_pointer(c->allocator, t_type_info_quaternion); + t_type_info_quaternion_ptr = make_type_pointer(c->allocator, t_type_info_quaternion); t_type_info_string_ptr = make_type_pointer(c->allocator, t_type_info_string); t_type_info_boolean_ptr = make_type_pointer(c->allocator, t_type_info_boolean); t_type_info_any_ptr = make_type_pointer(c->allocator, t_type_info_any); t_type_info_pointer_ptr = make_type_pointer(c->allocator, t_type_info_pointer); + t_type_info_atomic_ptr = make_type_pointer(c->allocator, t_type_info_atomic); t_type_info_procedure_ptr = make_type_pointer(c->allocator, t_type_info_procedure); t_type_info_array_ptr = make_type_pointer(c->allocator, t_type_info_array); t_type_info_dynamic_array_ptr = make_type_pointer(c->allocator, t_type_info_dynamic_array); |