103 lines
3.3 KiB
Plaintext
103 lines
3.3 KiB
Plaintext
(module main)
|
|
|
|
(import math (abs_i32 neg_i32 rem_i32 bit_and_i32 bit_or_i32 bit_xor_i32 is_even_i32 is_odd_i32 min_i32 max_i32 clamp_i32 square_i32 cube_i32 is_zero_i32 is_positive_i32 is_negative_i32 in_range_i32 abs_i64 neg_i64 rem_i64 bit_and_i64 bit_or_i64 bit_xor_i64 is_even_i64 is_odd_i64 min_i64 max_i64 clamp_i64 square_i64 cube_i64 is_zero_i64 is_positive_i64 is_negative_i64 in_range_i64 abs_f64 neg_f64 min_f64 max_f64 clamp_f64 square_f64 cube_f64 is_zero_f64 is_positive_f64 is_negative_f64 in_range_f64))
|
|
|
|
(fn imported_i32_score () -> i32
|
|
(clamp_i32 (+ (square_i32 (abs_i32 (neg_i32 6))) (max_i32 (min_i32 (cube_i32 1) 7) 6)) 0 42))
|
|
|
|
(fn imported_i64_score () -> i64
|
|
(clamp_i64 (+ (square_i64 (abs_i64 (neg_i64 6i64))) (max_i64 (min_i64 (cube_i64 1i64) 7i64) 6i64)) 0i64 42i64))
|
|
|
|
(fn imported_f64_score () -> f64
|
|
(clamp_f64 (+ (square_f64 (abs_f64 (neg_f64 6.0))) (max_f64 (min_f64 (cube_f64 1.0) 7.0) 6.0)) 0.0 42.0))
|
|
|
|
(fn imported_i32_predicates_ok () -> bool
|
|
(if (is_zero_i32 (neg_i32 0))
|
|
(if (is_positive_i32 (abs_i32 -5))
|
|
(if (is_negative_i32 (neg_i32 5))
|
|
(if (= (rem_i32 17 5) 2)
|
|
(if (is_even_i32 42)
|
|
(if (is_odd_i32 -41)
|
|
(if (= (bit_and_i32 6 3) 2)
|
|
(if (= (bit_or_i32 4 2) 6)
|
|
(if (= (bit_xor_i32 7 3) 4)
|
|
(in_range_i32 (imported_i32_score) 0 42)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false))
|
|
|
|
(fn imported_i64_predicates_ok () -> bool
|
|
(if (is_zero_i64 (neg_i64 0i64))
|
|
(if (is_positive_i64 (abs_i64 -5i64))
|
|
(if (is_negative_i64 (neg_i64 5i64))
|
|
(if (= (rem_i64 17i64 5i64) 2i64)
|
|
(if (is_even_i64 42i64)
|
|
(if (is_odd_i64 -41i64)
|
|
(if (= (bit_and_i64 6i64 3i64) 2i64)
|
|
(if (= (bit_or_i64 4i64 2i64) 6i64)
|
|
(if (= (bit_xor_i64 7i64 3i64) 4i64)
|
|
(in_range_i64 (imported_i64_score) 0i64 42i64)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false)
|
|
false))
|
|
|
|
(fn imported_f64_predicates_ok () -> bool
|
|
(if (is_zero_f64 (neg_f64 0.0))
|
|
(if (is_positive_f64 (abs_f64 -5.0))
|
|
(if (is_negative_f64 (neg_f64 5.0))
|
|
(in_range_f64 (imported_f64_score) 0.0 42.0)
|
|
false)
|
|
false)
|
|
false))
|
|
|
|
(fn imported_i32_helpers_ok () -> bool
|
|
(if (= (imported_i32_score) 42)
|
|
(imported_i32_predicates_ok)
|
|
false))
|
|
|
|
(fn imported_i64_helpers_ok () -> bool
|
|
(if (= (imported_i64_score) 42i64)
|
|
(imported_i64_predicates_ok)
|
|
false))
|
|
|
|
(fn imported_f64_helpers_ok () -> bool
|
|
(if (= (imported_f64_score) 42.0)
|
|
(imported_f64_predicates_ok)
|
|
false))
|
|
|
|
(fn imported_math_helpers_ok () -> bool
|
|
(if (imported_i32_helpers_ok)
|
|
(if (imported_i64_helpers_ok)
|
|
(imported_f64_helpers_ok)
|
|
false)
|
|
false))
|
|
|
|
(fn main () -> i32
|
|
(if (imported_math_helpers_ok)
|
|
42
|
|
1))
|
|
|
|
(test "explicit local math import i32 helpers"
|
|
(imported_i32_helpers_ok))
|
|
|
|
(test "explicit local math import i64 helpers"
|
|
(imported_i64_helpers_ok))
|
|
|
|
(test "explicit local math import f64 helpers"
|
|
(imported_f64_helpers_ok))
|
|
|
|
(test "explicit local math import all helpers"
|
|
(= (main) 42))
|