Merge branch 'master' into windows-llvm-13.0.0

This commit is contained in:
gingerBill
2022-01-10 12:20:00 +00:00
2 changed files with 15 additions and 4 deletions

View File

@@ -287,10 +287,10 @@ array_cast :: proc(v: $A/[$N]$T, $Elem_Type: typeid) -> (w: [N]Elem_Type) #no_bo
return
}
matrix_cast :: proc(v: $A/[$M][$N]$T, $Elem_Type: typeid) -> (w: [M][N]Elem_Type) #no_bounds_check {
for i in 0..<M {
for j in 0..<N {
w[i][j] = Elem_Type(v[i][j])
matrix_cast :: proc(v: $A/matrix[$M, $N]$T, $Elem_Type: typeid) -> (w: matrix[M, N]Elem_Type) #no_bounds_check {
for j in 0..<N {
for i in 0..<M {
w[i, j] = Elem_Type(v[i, j])
}
}
return

View File

@@ -2284,10 +2284,21 @@ void check_matrix_type(CheckerContext *ctx, Type **type, Ast *node) {
}
if (!is_type_valid_for_matrix_elems(elem)) {
if (elem == t_typeid) {
Entity *e = entity_of_node(mt->elem);
if (e && e->kind == Entity_TypeName && e->TypeName.is_type_alias) {
// HACK TODO(bill): This is to allow polymorphic parameters for matrix elements
// proc($T: typeid) -> matrix[2, 2]T
//
// THIS IS NEEDS TO BE FIXED AND NOT USE THIS HACK
goto type_assign;
}
}
gbString s = type_to_string(elem);
error(column.expr, "Matrix elements types are limited to integers, floats, and complex, got %s", s);
gb_string_free(s);
}
type_assign:;
*type = alloc_type_matrix(elem, row_count, column_count, generic_row, generic_column);