;;; TOOL: run-interp ;;; ARGS*: --enable-exceptions (module (tag $e1) (tag $e2) (tag $e3) (func $thrower (throw $e1)) (func $thrower2 (try (do (throw $e1)) (catch $e2))) (func (export "call-thrower") (result i32) (try (result i32) (do (call $thrower) (i32.const 0)) (catch $e1 (i32.const 1)))) (func (export "call-thrower2") (result i32) (try (result i32) (do (call $thrower2) (i32.const 0)) (catch $e1 (i32.const 1)))) (func $helper (result i32) (try (result i32) (do (call $thrower2) (i32.const 0)) (catch $e3 (i32.const 1)))) (func (export "call-thrower3") (result i32) (try (result i32) (do (call $helper)) (catch $e1 (i32.const 1)))) (func (export "call-thrower4") (result i32) (try (result i32) (do (call $helper)) (catch $e2 (i32.const 1)))) ) (;; STDOUT ;;; call-thrower() => i32:1 call-thrower2() => i32:1 call-thrower3() => i32:1 call-thrower4() => error: uncaught exception ;;; STDOUT ;;)