aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/fixtures/spec_testsuites/core/forward.wast
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixtures/spec_testsuites/core/forward.wast')
-rw-r--r--tests/fixtures/spec_testsuites/core/forward.wast20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/fixtures/spec_testsuites/core/forward.wast b/tests/fixtures/spec_testsuites/core/forward.wast
new file mode 100644
index 0000000..7bb3770
--- /dev/null
+++ b/tests/fixtures/spec_testsuites/core/forward.wast
@@ -0,0 +1,20 @@
+(module
+ (func $even (export "even") (param $n i32) (result i32)
+ (if (result i32) (i32.eq (local.get $n) (i32.const 0))
+ (then (i32.const 1))
+ (else (call $odd (i32.sub (local.get $n) (i32.const 1))))
+ )
+ )
+
+ (func $odd (export "odd") (param $n i32) (result i32)
+ (if (result i32) (i32.eq (local.get $n) (i32.const 0))
+ (then (i32.const 0))
+ (else (call $even (i32.sub (local.get $n) (i32.const 1))))
+ )
+ )
+)
+
+(assert_return (invoke "even" (i32.const 13)) (i32.const 0))
+(assert_return (invoke "even" (i32.const 20)) (i32.const 1))
+(assert_return (invoke "odd" (i32.const 13)) (i32.const 1))
+(assert_return (invoke "odd" (i32.const 20)) (i32.const 0))