;;; TOOL: run-interp ;;; ARGS*: --enable-exceptions (module (tag $e1) (tag $e2) (tag $e3 (param i32)) (func (export "throw-uncaught") (throw $e1)) (func (export "throw-uncaught-2") (try (do (throw $e1)))) (func (export "try-catch") (result i32) (try (result i32) (do (throw $e1)) (catch $e1 (i32.const 1)))) (func (export "try-catch-all") (result i32) (try (result i32) (do (throw $e1)) (catch_all (i32.const 1)))) (func (export "try-catch-all-2") (try (do (i32.const 1) (throw $e3)) (catch_all))) (func (export "try-catch-payload") (result i32) (try (result i32) (do (i32.const 42) (throw $e3)) (catch $e3))) (func (export "try-catch-multi") (result i32) (try (result i32) (do (throw $e2)) (catch $e1 (i32.const 1)) (catch $e2 (i32.const 2)))) (func (export "try-catch-nested") (result i32) (try (result i32) (do (try (result i32) (do (throw $e2)) (catch $e1 (i32.const 1)))) (catch $e2 (i32.const 2)))) (func (export "try-catch-nested-2") (result i32) (try (result i32) (do (try (result i32) (do (throw $e1)) (catch $e1 (i32.const 1)))) (catch $e1 (i32.const 2)))) (func (export "try-catch-nested-3") (result i32) (try (result i32) (do (try (result i32) (do (try (result i32) (do (throw $e2)) (catch $e1 (i32.const 1)))) (catch $e2 (i32.const 2)))) (catch_all (i32.const 3)))) (func (export "try-catch-nested-4") (result i32) (try (result i32) (do (try (result i32) (do (throw $e1)) (catch $e1 (try (do (throw $e2))) (i32.const 0)) (catch $e2 (i32.const 0)))) (catch $e2 (i32.const 1)))) (func (export "try-catch-nested-5") (result i32) (try (result i32) (do (try (result i32) (do (throw $e1)) (catch $e1 (try (do (throw $e2))) (i32.const 0)) (catch_all (i32.const 0)))) (catch $e2 (i32.const 1)))) (func (export "try-catch-uncaught") (result i32) (try (result i32) (do (throw $e1)) (catch $e2 (i32.const 1)))) (func (export "try-catch-stack-size") (result i32) (i32.const 1) (try (do (i32.const 0) (throw $e1)) (catch $e1)) ;; here the value stack should have just 1 ) (func $helper (try (do (i32.const 0) (throw $e1)) (catch $e1))) (func (export "try-catch-stack-size-2") (result i32) (i32.const 1) (call $helper))) (;; STDOUT ;;; throw-uncaught() => error: uncaught exception throw-uncaught-2() => error: uncaught exception try-catch() => i32:1 try-catch-all() => i32:1 try-catch-all-2() => try-catch-payload() => i32:42 try-catch-multi() => i32:2 try-catch-nested() => i32:2 try-catch-nested-2() => i32:1 try-catch-nested-3() => i32:2 try-catch-nested-4() => i32:1 try-catch-nested-5() => i32:1 try-catch-uncaught() => error: uncaught exception try-catch-stack-size() => i32:1 try-catch-stack-size-2() => i32:1 ;;; STDOUT ;;)