mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-26 13:29:12 +00:00
Merge pull request #3877 from roc-lang/dev-backend-add-checked
dev backend add checked
This commit is contained in:
commit
1db7c3664d
6 changed files with 120 additions and 67 deletions
|
@ -11,7 +11,7 @@ use crate::helpers::wasm::assert_evals_to;
|
|||
#[allow(unused_imports)]
|
||||
use indoc::indoc;
|
||||
#[allow(unused_imports)]
|
||||
use roc_std::{RocDec, RocOrder};
|
||||
use roc_std::{RocDec, RocOrder, RocResult};
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-dev", feature = "gen-wasm"))]
|
||||
|
@ -1787,30 +1787,22 @@ fn int_add_overflow() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
fn int_add_checked() {
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm", feature = "gen-dev"))]
|
||||
fn int_add_checked_ok() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
when Num.addChecked 1 2 is
|
||||
Ok v -> v
|
||||
_ -> -1
|
||||
"#
|
||||
),
|
||||
3,
|
||||
i64
|
||||
"Num.addChecked 1 2",
|
||||
RocResult::ok(3),
|
||||
RocResult<i64, ()>
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm", feature = "gen-dev"))]
|
||||
fn int_add_checked_err() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
when Num.addChecked 9_223_372_036_854_775_807 1 is
|
||||
Err Overflow -> -1
|
||||
Ok v -> v
|
||||
"#
|
||||
),
|
||||
-1,
|
||||
i64
|
||||
"Num.addChecked 9_223_372_036_854_775_807 1",
|
||||
RocResult::err(()),
|
||||
RocResult<i64, ()>
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1818,11 +1810,7 @@ fn int_add_checked() {
|
|||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
fn int_add_wrap() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
Num.addWrap 9_223_372_036_854_775_807 1
|
||||
"#
|
||||
),
|
||||
"Num.addWrap 9_223_372_036_854_775_807 1",
|
||||
std::i64::MIN,
|
||||
i64
|
||||
);
|
||||
|
@ -1832,15 +1820,9 @@ fn int_add_wrap() {
|
|||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
fn float_add_checked_pass() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
when Num.addChecked 1.0 0.0 is
|
||||
Ok v -> v
|
||||
Err Overflow -> -1.0
|
||||
"#
|
||||
),
|
||||
1.0,
|
||||
f64
|
||||
"Num.addChecked 1.0 0.0",
|
||||
RocResult::ok(1.0),
|
||||
RocResult<f64, ()>
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1848,27 +1830,17 @@ fn float_add_checked_pass() {
|
|||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
fn float_add_checked_fail() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
when Num.addChecked 1.7976931348623157e308 1.7976931348623157e308 is
|
||||
Err Overflow -> -1
|
||||
Ok v -> v
|
||||
"#
|
||||
),
|
||||
-1.0,
|
||||
f64
|
||||
"Num.addChecked 1.7976931348623157e308 1.7976931348623157e308",
|
||||
RocResult::err(()),
|
||||
RocResult<f64, ()>
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm", feature = "gen_dev"))]
|
||||
fn float_add_overflow() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
1.7976931348623157e308 + 1.7976931348623157e308
|
||||
"#
|
||||
),
|
||||
"1.7976931348623157e308 + 1.7976931348623157e308",
|
||||
f64::INFINITY,
|
||||
f64
|
||||
);
|
||||
|
@ -1907,11 +1879,7 @@ fn int_sub_wrap() {
|
|||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
fn float_sub_overflow() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
-1.7976931348623157e308 - 1.7976931348623157e308
|
||||
"#
|
||||
),
|
||||
"-1.7976931348623157e308 - 1.7976931348623157e308",
|
||||
-f64::INFINITY,
|
||||
f64
|
||||
);
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
#![cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
|
||||
#[cfg(feature = "gen-llvm")]
|
||||
use crate::helpers::llvm::assert_evals_to;
|
||||
|
||||
// #[cfg(feature = "gen-dev")]
|
||||
// use crate::helpers::dev::assert_evals_to;
|
||||
#[cfg(feature = "gen-dev")]
|
||||
use crate::helpers::dev::assert_evals_to;
|
||||
|
||||
#[cfg(feature = "gen-wasm")]
|
||||
use crate::helpers::wasm::assert_evals_to;
|
||||
|
@ -228,7 +226,7 @@ fn is_err() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm", feature = "gen-dev"))]
|
||||
fn roc_result_ok() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
@ -245,7 +243,7 @@ fn roc_result_ok() {
|
|||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm", feature = "gen-dev"))]
|
||||
fn roc_result_err() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue