mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
formatting & catch zig overflow error
This commit is contained in:
parent
0cc6e44d35
commit
4152519bfb
7 changed files with 19 additions and 26 deletions
|
@ -118,10 +118,7 @@ mod repl_eval {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn num_ceil_division_success() {
|
fn num_ceil_division_success() {
|
||||||
expect_success(
|
expect_success("Num.divCeil 4 3", "Ok 2 : Result (Int *) [ DivByZero ]*")
|
||||||
"Num.divCeil 4 3",
|
|
||||||
"Ok 2 : Result (Int *) [ DivByZero ]*"
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -16,7 +16,7 @@ pub fn powInt(base: i64, exp: i64) callconv(.C) i64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn divCeil(numerator: i64, denominator: i64) callconv(.C) i64 {
|
pub fn divCeil(numerator: i64, denominator: i64) callconv(.C) i64 {
|
||||||
return @call(.{ .modifier = always_inline }, math.divCeil, .{ i64, numerator, denominator });
|
return @call(.{ .modifier = always_inline }, math.divCeil, .{ i64, numerator, denominator }) catch unreachable;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn acos(num: f64) callconv(.C) f64 {
|
pub fn acos(num: f64) callconv(.C) f64 {
|
||||||
|
|
|
@ -293,12 +293,12 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
||||||
// minInt : Int range
|
// minInt : Int range
|
||||||
add_type!(Symbol::NUM_MIN_INT, int_type(flex(TVAR1)));
|
add_type!(Symbol::NUM_MIN_INT, int_type(flex(TVAR1)));
|
||||||
|
|
||||||
// divInt : Int a, Int a -> Result (Int a) [ DivByZero ]*
|
|
||||||
let div_by_zero = SolvedType::TagUnion(
|
let div_by_zero = SolvedType::TagUnion(
|
||||||
vec![(TagName::Global("DivByZero".into()), vec![])],
|
vec![(TagName::Global("DivByZero".into()), vec![])],
|
||||||
Box::new(SolvedType::Wildcard),
|
Box::new(SolvedType::Wildcard),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// divInt : Int a, Int a -> Result (Int a) [ DivByZero ]*
|
||||||
add_top_level_function_type!(
|
add_top_level_function_type!(
|
||||||
Symbol::NUM_DIV_INT,
|
Symbol::NUM_DIV_INT,
|
||||||
vec![int_type(flex(TVAR1)), int_type(flex(TVAR1))],
|
vec![int_type(flex(TVAR1)), int_type(flex(TVAR1))],
|
||||||
|
@ -306,18 +306,12 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
||||||
);
|
);
|
||||||
|
|
||||||
//divCeil: Int a, Int a -> Result (Int a) [ DivByZero ]*
|
//divCeil: Int a, Int a -> Result (Int a) [ DivByZero ]*
|
||||||
let div_by_zero = SolvedType::TagUnion(
|
|
||||||
vec![(TagName::Global("DivByZero".into()), vec![])],
|
|
||||||
Box::new(SolvedType::Wildcard),
|
|
||||||
);
|
|
||||||
|
|
||||||
add_top_level_function_type!(
|
add_top_level_function_type!(
|
||||||
Symbol::NUM_DIV_CEIL,
|
Symbol::NUM_DIV_CEIL,
|
||||||
vec![int_type(flex(TVAR1)), int_type(flex(TVAR1))],
|
vec![int_type(flex(TVAR1)), int_type(flex(TVAR1))],
|
||||||
Box::new(result_type(int_type(flex(TVAR1)), div_by_zero.clone())),
|
Box::new(result_type(int_type(flex(TVAR1)), div_by_zero.clone())),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// bitwiseAnd : Int a, Int a -> Int a
|
// bitwiseAnd : Int a, Int a -> Int a
|
||||||
add_top_level_function_type!(
|
add_top_level_function_type!(
|
||||||
Symbol::NUM_BITWISE_AND,
|
Symbol::NUM_BITWISE_AND,
|
||||||
|
|
|
@ -2880,7 +2880,7 @@ fn num_div_ceil(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
vec![
|
vec![
|
||||||
// Num.#divUnchecked numerator denominator
|
// Num.#divUnchecked numerator denominator
|
||||||
RunLowLevel {
|
RunLowLevel {
|
||||||
op: LowLevel::NumDivCeil,
|
op: LowLevel::NumDivCeilUnchecked,
|
||||||
args: vec![
|
args: vec![
|
||||||
(num_var, Var(Symbol::ARG_1)),
|
(num_var, Var(Symbol::ARG_1)),
|
||||||
(num_var, Var(Symbol::ARG_2)),
|
(num_var, Var(Symbol::ARG_2)),
|
||||||
|
@ -2911,7 +2911,6 @@ fn num_div_ceil(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// List.first : List elem -> Result elem [ ListWasEmpty ]*
|
/// List.first : List elem -> Result elem [ ListWasEmpty ]*
|
||||||
///
|
///
|
||||||
/// List.first :
|
/// List.first :
|
||||||
|
|
|
@ -5327,8 +5327,8 @@ fn run_low_level<'a, 'ctx, 'env>(
|
||||||
}
|
}
|
||||||
|
|
||||||
NumAdd | NumSub | NumMul | NumLt | NumLte | NumGt | NumGte | NumRemUnchecked
|
NumAdd | NumSub | NumMul | NumLt | NumLte | NumGt | NumGte | NumRemUnchecked
|
||||||
| NumIsMultipleOf | NumAddWrap | NumAddChecked | NumDivUnchecked | NumDivCeilUnchecked | NumPow | NumPowInt
|
| NumIsMultipleOf | NumAddWrap | NumAddChecked | NumDivUnchecked | NumDivCeilUnchecked
|
||||||
| NumSubWrap | NumSubChecked | NumMulWrap | NumMulChecked => {
|
| NumPow | NumPowInt | NumSubWrap | NumSubChecked | NumMulWrap | NumMulChecked => {
|
||||||
debug_assert_eq!(args.len(), 2);
|
debug_assert_eq!(args.len(), 2);
|
||||||
|
|
||||||
let (lhs_arg, lhs_layout) = load_symbol_and_layout(scope, &args[0]);
|
let (lhs_arg, lhs_layout) = load_symbol_and_layout(scope, &args[0]);
|
||||||
|
@ -6073,7 +6073,9 @@ fn build_int_binop<'a, 'ctx, 'env>(
|
||||||
}
|
}
|
||||||
NumDivUnchecked => bd.build_int_signed_div(lhs, rhs, "div_int").into(),
|
NumDivUnchecked => bd.build_int_signed_div(lhs, rhs, "div_int").into(),
|
||||||
NumPowInt => call_bitcode_fn(env, &[lhs.into(), rhs.into()], bitcode::NUM_POW_INT),
|
NumPowInt => call_bitcode_fn(env, &[lhs.into(), rhs.into()], bitcode::NUM_POW_INT),
|
||||||
NumDivCeilUnchecked => call_bitcode_fn(env, &[lhs.into(), rhs.into()], bitcode::NUM_DIV_CEIL),
|
NumDivCeilUnchecked => {
|
||||||
|
call_bitcode_fn(env, &[lhs.into(), rhs.into()], bitcode::NUM_DIV_CEIL)
|
||||||
|
}
|
||||||
NumBitwiseAnd => bd.build_and(lhs, rhs, "int_bitwise_and").into(),
|
NumBitwiseAnd => bd.build_and(lhs, rhs, "int_bitwise_and").into(),
|
||||||
NumBitwiseXor => bd.build_xor(lhs, rhs, "int_bitwise_xor").into(),
|
NumBitwiseXor => bd.build_xor(lhs, rhs, "int_bitwise_xor").into(),
|
||||||
NumBitwiseOr => bd.build_or(lhs, rhs, "int_bitwise_or").into(),
|
NumBitwiseOr => bd.build_or(lhs, rhs, "int_bitwise_or").into(),
|
||||||
|
|
|
@ -124,12 +124,13 @@ impl LowLevel {
|
||||||
| DictGetUnsafe | DictKeys | DictValues | DictUnion | DictIntersection
|
| DictGetUnsafe | DictKeys | DictValues | DictUnion | DictIntersection
|
||||||
| DictDifference | SetFromList | NumAdd | NumAddWrap | NumAddChecked | NumSub
|
| DictDifference | SetFromList | NumAdd | NumAddWrap | NumAddChecked | NumSub
|
||||||
| NumSubWrap | NumSubChecked | NumMul | NumMulWrap | NumMulChecked | NumGt | NumGte
|
| NumSubWrap | NumSubChecked | NumMul | NumMulWrap | NumMulChecked | NumGt | NumGte
|
||||||
| NumLt | NumLte | NumCompare | NumDivUnchecked | NumDivCeilUnchecked | NumRemUnchecked | NumIsMultipleOf
|
| NumLt | NumLte | NumCompare | NumDivUnchecked | NumDivCeilUnchecked
|
||||||
| NumAbs | NumNeg | NumSin | NumCos | NumSqrtUnchecked | NumLogUnchecked | NumRound
|
| NumRemUnchecked | NumIsMultipleOf | NumAbs | NumNeg | NumSin | NumCos
|
||||||
| NumToFloat | NumPow | NumCeiling | NumPowInt | NumFloor | NumIsFinite | NumAtan
|
| NumSqrtUnchecked | NumLogUnchecked | NumRound | NumToFloat | NumPow | NumCeiling
|
||||||
| NumAcos | NumAsin | NumBitwiseAnd | NumBitwiseXor | NumBitwiseOr | NumShiftLeftBy
|
| NumPowInt | NumFloor | NumIsFinite | NumAtan | NumAcos | NumAsin | NumBitwiseAnd
|
||||||
| NumShiftRightBy | NumBytesToU16 | NumBytesToU32 | NumShiftRightZfBy | NumIntCast
|
| NumBitwiseXor | NumBitwiseOr | NumShiftLeftBy | NumShiftRightBy | NumBytesToU16
|
||||||
| Eq | NotEq | And | Or | Not | Hash | ExpectTrue => false,
|
| NumBytesToU32 | NumShiftRightZfBy | NumIntCast | Eq | NotEq | And | Or | Not
|
||||||
|
| Hash | ExpectTrue => false,
|
||||||
|
|
||||||
ListMap | ListMap2 | ListMap3 | ListMapWithIndex | ListKeepIf | ListWalk
|
ListMap | ListMap2 | ListMap3 | ListMapWithIndex | ListKeepIf | ListWalk
|
||||||
| ListWalkUntil | ListWalkBackwards | ListKeepOks | ListKeepErrs | ListSortWith
|
| ListWalkUntil | ListWalkBackwards | ListKeepOks | ListKeepErrs | ListSortWith
|
||||||
|
|
|
@ -1000,9 +1000,9 @@ pub fn lowlevel_borrow_signature(arena: &Bump, op: LowLevel) -> &[bool] {
|
||||||
|
|
||||||
And | Or | NumAdd | NumAddWrap | NumAddChecked | NumSub | NumSubWrap | NumSubChecked
|
And | Or | NumAdd | NumAddWrap | NumAddChecked | NumSub | NumSubWrap | NumSubChecked
|
||||||
| NumMul | NumMulWrap | NumMulChecked | NumGt | NumGte | NumLt | NumLte | NumCompare
|
| NumMul | NumMulWrap | NumMulChecked | NumGt | NumGte | NumLt | NumLte | NumCompare
|
||||||
| NumDivUnchecked | NumDivCeilUnchecked | NumRemUnchecked | NumIsMultipleOf | NumPow | NumPowInt
|
| NumDivUnchecked | NumDivCeilUnchecked | NumRemUnchecked | NumIsMultipleOf | NumPow
|
||||||
| NumBitwiseAnd | NumBitwiseXor | NumBitwiseOr | NumShiftLeftBy | NumShiftRightBy
|
| NumPowInt | NumBitwiseAnd | NumBitwiseXor | NumBitwiseOr | NumShiftLeftBy
|
||||||
| NumShiftRightZfBy => arena.alloc_slice_copy(&[irrelevant, irrelevant]),
|
| NumShiftRightBy | NumShiftRightZfBy => arena.alloc_slice_copy(&[irrelevant, irrelevant]),
|
||||||
|
|
||||||
NumAbs | NumNeg | NumSin | NumCos | NumSqrtUnchecked | NumLogUnchecked | NumRound
|
NumAbs | NumNeg | NumSin | NumCos | NumSqrtUnchecked | NumLogUnchecked | NumRound
|
||||||
| NumCeiling | NumFloor | NumToFloat | Not | NumIsFinite | NumAtan | NumAcos | NumAsin
|
| NumCeiling | NumFloor | NumToFloat | Not | NumIsFinite | NumAtan | NumAcos | NumAsin
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue