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

@ -188,8 +188,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),
);
@ -197,7 +197,7 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
Symbol::NUM_ADD_CHECKED,
SolvedType::Func(
vec![num_type(flex(TVAR1)), num_type(flex(TVAR1))],
Box::new(result_type(num_type(flex(TVAR1)), int_overflow)),
Box::new(result_type(num_type(flex(TVAR1)), overflow)),
),
);