refactor: use function for overflow Tag in std.rs

This commit is contained in:
Celso Bonutti Filho 2020-12-23 13:40:24 -03:00
parent cfbc4d1c54
commit d3d3497b46

View file

@ -75,17 +75,19 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
), ),
); );
// addChecked : Num a, Num a -> Result (Num a) [ Overflow ]* fn overflow() -> SolvedType {
let overflow = SolvedType::TagUnion( SolvedType::TagUnion(
vec![(TagName::Global("Overflow".into()), vec![])], vec![(TagName::Global("Overflow".into()), vec![])],
Box::new(SolvedType::Wildcard), Box::new(SolvedType::Wildcard),
); )
}
// addChecked : Num a, Num a -> Result (Num a) [ Overflow ]*
add_type( add_type(
Symbol::NUM_ADD_CHECKED, Symbol::NUM_ADD_CHECKED,
top_level_function( top_level_function(
vec![num_type(flex(TVAR1)), num_type(flex(TVAR1))], vec![num_type(flex(TVAR1)), num_type(flex(TVAR1))],
Box::new(result_type(num_type(flex(TVAR1)), overflow.clone())), Box::new(result_type(num_type(flex(TVAR1)), overflow())),
), ),
); );
@ -115,7 +117,7 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
Symbol::NUM_SUB_CHECKED, Symbol::NUM_SUB_CHECKED,
top_level_function( top_level_function(
vec![num_type(flex(TVAR1)), num_type(flex(TVAR1))], vec![num_type(flex(TVAR1)), num_type(flex(TVAR1))],
Box::new(result_type(num_type(flex(TVAR1)), overflow)), Box::new(result_type(num_type(flex(TVAR1)), overflow())),
), ),
); );