wasmtime-cli 43.0.1

Command-line interface for Wasmtime
Documentation
use wasmtime::*;

#[test]
#[cfg_attr(miri, ignore)]
fn test_tail_call_default() -> Result<()> {
    for (line, expected, cfg) in [
        (
            line!(),
            true,
            Config::new()
                .strategy(Strategy::Cranelift)
                .target("x86_64")?,
        ),
        (
            line!(),
            true,
            Config::new()
                .strategy(Strategy::Cranelift)
                .target("aarch64")?,
        ),
        (
            line!(),
            true,
            Config::new()
                .strategy(Strategy::Cranelift)
                .target("riscv64")?,
        ),
        (
            line!(),
            true,
            Config::new()
                .strategy(Strategy::Cranelift)
                .target("s390x")?,
        ),
        (
            line!(),
            false,
            Config::new().strategy(Strategy::Winch).target("x86_64")?,
        ),
        (
            line!(),
            false,
            Config::new().strategy(Strategy::Winch).target("aarch64")?,
        ),
        (
            line!(),
            false,
            Config::new()
                .strategy(Strategy::Cranelift)
                .wasm_tail_call(false)
                .target("x86_64")?,
        ),
    ] {
        cfg.signals_based_traps(true);
        let engine = Engine::new(cfg)?;

        eprintln!("running config on line {line}");
        let wat = r#"
            (module $from_name_section
                (func (export "run") (return_call 0))
            )
        "#;

        let result = engine.precompile_module(wat.as_bytes()).map(|_| ());

        eprintln!("got: {result:?}");

        assert_eq!(expected, result.is_ok());
    }

    Ok(())
}