Merge pull request #3877 from roc-lang/dev-backend-add-checked

dev backend add checked
This commit is contained in:
Folkert de Vries 2022-08-29 09:47:20 +02:00 committed by GitHub
commit 1db7c3664d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 120 additions and 67 deletions

View file

@ -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
);

View file

@ -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!(