mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 05:49:08 +00:00
37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
#[macro_export]
|
|
macro_rules! assert_evals_to {
|
|
($src:expr, $expected:expr, $ty:ty) => {{
|
|
assert_evals_to!($src, $expected, $ty, (|val| val));
|
|
}};
|
|
($src:expr, $expected:expr, $ty:ty, $transform:expr) => {
|
|
// Same as above, except with an additional transformation argument.
|
|
{
|
|
assert_evals_to!($src, $expected, $ty, $transform, true);
|
|
}
|
|
};
|
|
($src:expr, $expected:expr, $ty:ty, $transform:expr, $leak:expr) => {
|
|
// Run both with and without lazy literal optimization.
|
|
{
|
|
assert_evals_to!($src, $expected, $ty, $transform, $leak, false);
|
|
}
|
|
{
|
|
assert_evals_to!($src, $expected, $ty, $transform, $leak, true);
|
|
}
|
|
};
|
|
($src:expr, $expected:expr, $ty:ty, $transform:expr, $leak:expr, $lazy_literals:expr) => {
|
|
use bumpalo::Bump;
|
|
use roc_gen_dev::run_jit_function_raw;
|
|
let stdlib = roc_builtins::std::standard_stdlib();
|
|
|
|
let arena = Bump::new();
|
|
let (main_fn_name, errors, lib) =
|
|
$crate::helpers::eval::helper(&arena, $src, stdlib, $leak, $lazy_literals);
|
|
|
|
let transform = |success| {
|
|
let expected = $expected;
|
|
let given = $transform(success);
|
|
assert_eq!(&given, &expected);
|
|
};
|
|
run_jit_function_raw!(lib, main_fn_name, $ty, transform, errors)
|
|
};
|
|
}
|