aboutsummaryrefslogtreecommitdiff
path: root/src/check_builtin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_builtin.cpp')
-rw-r--r--src/check_builtin.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp
index f01b61128..8efaf6b26 100644
--- a/src/check_builtin.cpp
+++ b/src/check_builtin.cpp
@@ -3363,7 +3363,15 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
}
if (all_types_the_same) {
- operand->type = alloc_type_array(last_type, value_count);
+ Type *elem_type = default_type(last_type);
+ if (is_type_untyped(elem_type)) {
+ gbString s = expr_to_string(call);
+ error(call, "Invalid use of '%s' in '%.*s'", s, LIT(builtin_name));
+ gb_string_free(s);
+ return false;
+ }
+
+ operand->type = alloc_type_array(elem_type, value_count);
operand->mode = Addressing_Value;
} else {
Type *st = alloc_type_struct_complete();