summaryrefslogtreecommitdiff
path: root/types.c
diff options
context:
space:
mode:
Diffstat (limited to 'types.c')
-rw-r--r--types.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/types.c b/types.c
index f2208be..5c21557 100644
--- a/types.c
+++ b/types.c
@@ -692,7 +692,7 @@ static Status type_cast_status(Type *from, Type *to) {
break;
case BUILTIN_F32:
case BUILTIN_F64:
- if (to->kind == TYPE_BUILTIN) return STATUS_ERR;
+ if (to->kind != TYPE_BUILTIN) return STATUS_ERR;
switch (to->builtin) {
case BUILTIN_I8:
case BUILTIN_U8:
@@ -1590,6 +1590,10 @@ static bool types_expr(Typer *tr, Expression *e) {
err_print(arg->where, "Expected type %s as argument to function, but got %s.", estr, gstr);
return false;
}
+ if (got->flags & TYPE_IS_FLEXIBLE) {
+ /* "cast" */
+ *got = *expected;
+ }
}
if (fn_type->constness) {