| (module |
| (func $dummy) |
| (event $e (attr 0) (param i32)) |
| |
| (func $getFallthrough ;; unit tests for Properties::getFallthrough |
| (local $x0 i32) |
| (local $x1 i32) |
| (local $x2 i32) |
| (local $x3 i32) |
| (local $x4 i32) |
| |
| ;; try - try body does not throw, can |
| (local.set $x0 |
| (try (result i32) |
| (do |
| (i32.const 1) |
| ) |
| (catch_all |
| (i32.const 3) |
| ) |
| ) |
| ) |
| (drop (i32.and (local.get $x0) (i32.const 7))) |
| |
| ;; try - try body may throw, can't |
| (local.set $x1 |
| (try (result i32) |
| (do |
| (call $dummy) |
| (i32.const 1) |
| ) |
| (catch_all |
| (i32.const 3) |
| ) |
| ) |
| ) |
| (drop (i32.and (local.get $x1) (i32.const 7))) |
| |
| ;; nested try - inner try may throw and may not be caught by inner catch, |
| ;; can't |
| (local.set $x2 |
| (try (result i32) |
| (do |
| (try |
| (do |
| (throw $e (i32.const 0)) |
| ) |
| (catch $e |
| (drop (pop i32)) |
| ) |
| ) |
| (i32.const 1) |
| ) |
| (catch $e |
| (drop (pop i32)) |
| (i32.const 3) |
| ) |
| ) |
| ) |
| (drop (i32.and (local.get $x2) (i32.const 7))) |
| |
| ;; nested try - inner try may throw but will be caught by inner catch_all, |
| ;; can |
| (local.set $x3 |
| (try (result i32) |
| (do |
| (try |
| (do |
| (throw $e (i32.const 0)) |
| ) |
| (catch_all) |
| ) |
| (i32.const 1) |
| ) |
| (catch_all |
| (i32.const 3) |
| ) |
| ) |
| ) |
| (drop (i32.and (local.get $x3) (i32.const 7))) |
| |
| ;; nested try - inner catch_all may throw, can't |
| (local.set $x4 |
| (try (result i32) |
| (do |
| (try |
| (do) |
| (catch_all |
| (throw $e (i32.const 0)) |
| ) |
| ) |
| (i32.const 1) |
| ) |
| (catch_all |
| (i32.const 3) |
| ) |
| ) |
| ) |
| (drop (i32.and (local.get $x4) (i32.const 7))) |
| ) |
| ) |