diff --git a/compiler/builtins/src/std.rs b/compiler/builtins/src/std.rs index 438fa32944..489fd3ae59 100644 --- a/compiler/builtins/src/std.rs +++ b/compiler/builtins/src/std.rs @@ -75,17 +75,19 @@ pub fn types() -> MutMap { ), ); - // addChecked : Num a, Num a -> Result (Num a) [ Overflow ]* - let overflow = SolvedType::TagUnion( - vec![(TagName::Global("Overflow".into()), vec![])], - Box::new(SolvedType::Wildcard), - ); + fn overflow() -> SolvedType { + SolvedType::TagUnion( + vec![(TagName::Global("Overflow".into()), vec![])], + Box::new(SolvedType::Wildcard), + ) + } + // addChecked : Num a, Num a -> Result (Num a) [ Overflow ]* add_type( Symbol::NUM_ADD_CHECKED, top_level_function( 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::NUM_SUB_CHECKED, top_level_function( 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())), ), );