diff options
Diffstat (limited to 'test/example/c-api-kitchen-sink.c')
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index b45039c69..359203e8b 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -336,8 +336,11 @@ void test_core() { BinaryenExpressionRef catchBody = BinaryenDrop(module, BinaryenPop(module, BinaryenTypeInt32())); BinaryenExpressionRef catchAllBody = BinaryenNop(module); - BinaryenExpressionRef catchBodies[] = {catchBody, catchAllBody}; const char* catchEvents[] = {"a-event"}; + BinaryenExpressionRef catchBodies[] = {catchBody, catchAllBody}; + const char* emptyCatchEvents[] = {}; + BinaryenExpressionRef emptyCatchBodies[] = {}; + BinaryenExpressionRef nopCatchBody[] = {BinaryenNop(module)}; BinaryenType i32 = BinaryenTypeInt32(); BinaryenType i64 = BinaryenTypeInt64(); @@ -727,7 +730,33 @@ void test_core() { BinaryenRefNull(module, BinaryenTypeEqref()), BinaryenRefNull(module, BinaryenTypeEqref())), // Exception handling - BinaryenTry(module, tryBody, catchEvents, 1, catchBodies, 2), + BinaryenTry(module, NULL, tryBody, catchEvents, 1, catchBodies, 2, NULL), + // (try $try_outer + // (do + // (try + // (do + // (throw $a-event (i32.const 0)) + // ) + // (delegate $try_outer) + // ) + // ) + // (catch_all) + // ) + BinaryenTry(module, + "try_outer", + BinaryenTry(module, + NULL, + tryBody, + emptyCatchEvents, + 0, + emptyCatchBodies, + 0, + "try_outer"), + emptyCatchEvents, + 0, + nopCatchBody, + 1, + NULL), // Atomics BinaryenAtomicStore( module, |