aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/check_expr.c1
-rw-r--r--src/checker.c7
-rw-r--r--src/types.c36
3 files changed, 19 insertions, 25 deletions
diff --git a/src/check_expr.c b/src/check_expr.c
index 4dcb04c07..f205935c2 100644
--- a/src/check_expr.c
+++ b/src/check_expr.c
@@ -3126,6 +3126,7 @@ Entity *check_selector(Checker *c, Operand *operand, AstNode *node, Type *type_h
Entity **procs = gb_alloc_array(heap_allocator(), Entity *, overload_count);
map_entity_multi_get_all(&import_scope->elements, key, procs);
+
for (isize i = 0; i < overload_count; i++) {
Type *t = base_type(procs[i]->type);
if (t == t_invalid) {
diff --git a/src/checker.c b/src/checker.c
index fae2eef2d..cd6de9bb9 100644
--- a/src/checker.c
+++ b/src/checker.c
@@ -1797,7 +1797,6 @@ void check_import_entities(Checker *c, MapScope *file_scopes) {
}
}
-
if (!previously_added) {
array_add(&parent_scope->imported, scope);
} else {
@@ -1813,19 +1812,21 @@ void check_import_entities(Checker *c, MapScope *file_scopes) {
if (e->scope == parent_scope) {
continue;
}
+
+
if (!is_entity_kind_exported(e->kind)) {
continue;
}
if (id->is_import) {
if (is_entity_exported(e)) {
// TODO(bill): Should these entities be imported but cause an error when used?
- bool ok = add_entity(c, parent_scope, NULL, e);
+ bool ok = add_entity(c, parent_scope, e->identifier, e);
if (ok) {
map_bool_set(&parent_scope->implicit, hash_pointer(e), true);
}
}
} else {
- add_entity(c, parent_scope, NULL, e);
+ add_entity(c, parent_scope, e->identifier, e);
}
}
} else {
diff --git a/src/types.c b/src/types.c
index c67dc11ef..b4a2248cf 100644
--- a/src/types.c
+++ b/src/types.c
@@ -1614,31 +1614,23 @@ i64 type_align_of_internal(gbAllocator allocator, Type *t, TypePath *path) {
return gb_clamp(t->Record.custom_align, 1, build_context.max_align);
}
if (t->Record.field_count > 0) {
- // TODO(bill): What is this supposed to be?
+ i64 max = 1;
if (t->Record.is_packed) {
- i64 max = build_context.word_size;
- for (isize i = 0; i < t->Record.field_count; i++) {
- Type *field_type = t->Record.fields[i]->type;
- type_path_push(path, field_type);
- if (path->failure) {
- return FAILURE_ALIGNMENT;
- }
- i64 align = type_align_of_internal(allocator, field_type, path);
- type_path_pop(path);
- if (max < align) {
- max = align;
- }
- }
- return max;
+ max = build_context.word_size;
}
- Type *field_type = t->Record.fields[0]->type;
- type_path_push(path, field_type);
- if (path->failure) {
- return FAILURE_ALIGNMENT;
+ for (isize i = 0; i < t->Record.field_count; i++) {
+ Type *field_type = t->Record.fields[i]->type;
+ type_path_push(path, field_type);
+ if (path->failure) {
+ return FAILURE_ALIGNMENT;
+ }
+ i64 align = type_align_of_internal(allocator, field_type, path);
+ type_path_pop(path);
+ if (max < align) {
+ max = align;
+ }
}
- i64 align = type_align_of_internal(allocator, field_type, path);
- type_path_pop(path);
- return align;
+ return max;
}
break;
case TypeRecord_Union: {