aboutsummaryrefslogtreecommitdiff
path: root/boot/type_check.cc
diff options
context:
space:
mode:
Diffstat (limited to 'boot/type_check.cc')
-rw-r--r--boot/type_check.cc6
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(),