add different variants of addition

This commit is contained in:
Folkert 2020-09-21 23:38:10 +02:00
parent 455b73e8bd
commit fb4a796e07
9 changed files with 136 additions and 53 deletions

View file

@ -275,8 +275,8 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
});
// addChecked or (+) : Num a, Num a -> Result (Num a) [ IntOverflow ]*
let int_overflow = SolvedType::TagUnion(
vec![(TagName::Global("IntOverflow".into()), vec![])],
let overflow = SolvedType::TagUnion(
vec![(TagName::Global("Overflow".into()), vec![])],
Box::new(SolvedType::Wildcard),
);
@ -284,7 +284,7 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
let_tvars! { u, v, w, num, result, star };
unique_function(
vec![num_type(u, num), num_type(v, num)],
result_type(result, num_type(w, num), lift(star, int_overflow)),
result_type(result, num_type(w, num), lift(star, overflow)),
)
});