aboutsummaryrefslogtreecommitdiff
path: root/src/checker.c
diff options
context:
space:
mode:
authorZac Pierson <zacpiersonhehe@gmail.com>2017-02-08 11:50:33 -0600
committerZac Pierson <zacpiersonhehe@gmail.com>2017-02-08 11:50:33 -0600
commit72d4bfb32aae5890cbf60d7d2f038ece098e31dc (patch)
treed689876ceb55bec2247a04daa4d8cc1c5b6e5d9b /src/checker.c
parent37f7630a9eab8476199229e26b5b628cf73ff11d (diff)
parent454d0b5cf5b109fda01b3380b1fab0434d7ff51d (diff)
Merge https://github.com/gingerBill/Odin
Diffstat (limited to 'src/checker.c')
-rw-r--r--src/checker.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/checker.c b/src/checker.c
index 6b2bac628..09c97ceed 100644
--- a/src/checker.c
+++ b/src/checker.c
@@ -958,6 +958,12 @@ void add_type_info_type(Checker *c, Type *t) {
}
} break;
+ case Type_Map: {
+ add_type_info_type(c, bt->Map.key);
+ add_type_info_type(c, bt->Map.value);
+ add_type_info_type(c, bt->Map.generated_struct_type);
+ } break;
+
case Type_Tuple:
for (isize i = 0; i < bt->Tuple.variable_count; i++) {
Entity *var = bt->Tuple.variables[i];
@@ -1093,7 +1099,7 @@ void init_preload(Checker *c) {
- if (record->field_count != 19) {
+ if (record->field_count != 20) {
compiler_error("Invalid `Type_Info` layout");
}
t_type_info_named = record->fields[ 1]->type;
@@ -1114,6 +1120,7 @@ void init_preload(Checker *c) {
t_type_info_union = record->fields[16]->type;
t_type_info_raw_union = record->fields[17]->type;
t_type_info_enum = record->fields[18]->type;
+ t_type_info_map = record->fields[19]->type;
t_type_info_named_ptr = make_type_pointer(heap_allocator(), t_type_info_named);
t_type_info_integer_ptr = make_type_pointer(heap_allocator(), t_type_info_integer);
@@ -1133,6 +1140,7 @@ void init_preload(Checker *c) {
t_type_info_union_ptr = make_type_pointer(heap_allocator(), t_type_info_union);
t_type_info_raw_union_ptr = make_type_pointer(heap_allocator(), t_type_info_raw_union);
t_type_info_enum_ptr = make_type_pointer(heap_allocator(), t_type_info_enum);
+ t_type_info_map_ptr = make_type_pointer(heap_allocator(), t_type_info_map);
}
if (t_allocator == NULL) {
@@ -1155,12 +1163,12 @@ void init_preload(Checker *c) {
}
if (t_map_key == NULL) {
- Entity *e = find_core_entity(c, str_lit("Map_Key"));
+ Entity *e = find_core_entity(c, str_lit("__Map_Key"));
t_map_key = e->type;
}
if (t_map_header == NULL) {
- Entity *e = find_core_entity(c, str_lit("Map_Header"));
+ Entity *e = find_core_entity(c, str_lit("__Map_Header"));
t_map_header = e->type;
}