aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 9b33dabcd..da830aab1 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -2527,8 +2527,7 @@ Entity *check_selector(Checker *c, Operand *operand, AstNode *node, Type *type_h
}
if (entity->kind == Entity_ProcGroup) {
- auto *pge = &entity->ProcGroup;
- Array<Entity *> procs = pge->entities;
+ Array<Entity *> procs = entity->ProcGroup.entities;
bool skip = false;
for_array(i, procs) {
Entity *p = procs[i];
@@ -5460,8 +5459,12 @@ ExprKind check_expr_base_internal(Checker *c, Operand *o, AstNode *node, Type *t
max = index;
}
- if (t->kind == Type_Array && is_to_be_determined_array_count) {
- t->Array.count = max;
+ if (t->kind == Type_Array) {
+ if (is_to_be_determined_array_count) {
+ t->Array.count = max;
+ } else if (0 < max && max < t->Array.count) {
+ error(node, "Expected %lld values for this array literal, got %lld", cast(long long)t->Array.count, cast(long long)max);
+ }
}
break;