// Simple test with return_call.
var ins = wasmEvalText(`(module
    (tag $exn)
    (func $f0 (result i32)
       throw $exn
    )
    (func $f1 (result i32)
      try
        return_call $f0
      catch $exn
        i32.const 3
        return
      end
      i32.const 4
    )
    (func (export "main") (result i32)
      call $f1
    )
)`);
assertErrorMessage(() => ins.exports.main(), WebAssembly.Exception, /.*/);

// Test if return stub, created by introducing the slow path,
// not interfering with exception propagation.
var ins0 = wasmEvalText(`(module
    (tag $exn)
    (func $f0 (result i32)
       throw $exn
    )
    (func (export "f") (result i32)
      call $f0
    )
    (export "t" (tag $exn))
)`);
var ins = wasmEvalText(`(module
    (import "" "t" (tag $exn))
    (import "" "f" (func $f0 (result i32)))
    (func $f1 (result i32)
      try
        return_call $f0
      catch $exn
        i32.const 3
        return
      end
      i32.const 4
    )
    (func (export "main") (result i32)
      call $f1
    )
  )`, {"":ins0.exports,});
  
assertErrorMessage(() => ins.exports.main(), WebAssembly.Exception, /.*/);  
  