blob: d305aaaa9298a603e76eb6d3d3f787b2490204b7 [file] [log] [blame] [edit]
(module
(type $none_=>_none (func))
(type $i32_=>_none (func (param i32)))
(type $i64_=>_none (func (param i64)))
(type $i32_i64_=>_none (func (param i32 i64)))
(event $event$0 (attr 0) (param i32))
(event $event$1 (attr 0) (param i64))
(event $event$2 (attr 0) (param i32 i64))
(func $foo
(nop)
)
(func $bar
(nop)
)
(func $eh_test
(local $x i32)
(local $1 i64)
(local $2 (i32 i64))
(local $3 i32)
(local $4 i32)
(try
(do
(throw $event$0
(i32.const 0)
)
)
(catch $event$0
(drop
(pop i32)
)
)
)
(try
(do
(throw $event$2
(i32.const 0)
(i64.const 0)
)
)
(catch $event$2
(local.set $2
(pop i32 i64)
)
(local.set $x
(block (result i32)
(local.set $3
(tuple.extract 0
(local.get $2)
)
)
(local.set $1
(tuple.extract 1
(local.get $2)
)
)
(local.get $3)
)
)
(drop
(block (result i32)
(local.set $4
(local.get $x)
)
(drop
(local.get $1)
)
(local.get $4)
)
)
)
)
(block $label$5
(try
(do
(br $label$5)
)
(catch $event$0
(drop
(pop i32)
)
(br $label$5)
)
)
)
(try
(do
(nop)
)
(catch $event$0
(drop
(pop i32)
)
)
)
(try
(do
(call $foo)
(call $bar)
)
(catch $event$0
(drop
(pop i32)
)
(call $foo)
(call $bar)
)
)
(try
(do
(throw $event$0
(i32.const 0)
)
)
(catch $event$0
(drop
(pop i32)
)
)
(catch $event$1
(drop
(pop i64)
)
)
)
(try
(do
(throw $event$0
(i32.const 0)
)
)
(catch_all
(nop)
)
)
(try
(do
(throw $event$0
(i32.const 0)
)
)
(catch $event$0
(drop
(pop i32)
)
)
(catch $event$1
(drop
(pop i64)
)
)
(catch_all
(call $foo)
(call $bar)
)
)
(try
(do
(throw $event$0
(i32.const 0)
)
)
(catch $event$0
(drop
(pop i32)
)
(rethrow 0)
)
)
)
)