diff options
Diffstat (limited to 'boot/type_check.cc')
| -rw-r--r-- | boot/type_check.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/boot/type_check.cc b/boot/type_check.cc index e58a50e..d830763 100644 --- a/boot/type_check.cc +++ b/boot/type_check.cc @@ -569,7 +569,8 @@ namespace elna::boot .right = case_label->type_decoration, .operation = binary_operator::equals }; - add_error<type_mismatch_error>(case_label->position(), condition_type, binary_error); + add_error<type_mismatch_error>(case_label->position(), + statement->condition().type_decoration, binary_error); } } } @@ -843,7 +844,8 @@ namespace elna::boot } else if (operation == unary_operator::minus) { - if (!is_primitive_type(resolved, "Int") + auto signed_primitive = resolved.get<primitive_type>(); + if ((signed_primitive == nullptr || !signed_primitive->identifier.starts_with("Int")) && !is_primitive_type(resolved, "Float")) { add_error<type_mismatch_error>(expression->position(), |
