Files
simple-rust-tests/__wasm/wit-bindgen-sample/wit-bindgen/crates/gen-wasmtime/tests/codegen.rs

109 lines
2.3 KiB
Rust

#![allow(dead_code, type_alias_bounds)]
fn main() {
println!("compiled successfully!")
}
#[rustfmt::skip]
mod exports {
test_helpers::codegen_wasmtime_export!(
"*.wit"
// TODO: implement async support
"!async-functions.wit"
// If you want to exclude a specific test you can include it here with
// gitignore glob syntax:
//
// "!wasm.wit"
// "!host.wit"
//
//
// Similarly you can also just remove the `*.wit` glob and list tests
// individually if you're debugging.
);
}
mod imports {
test_helpers::codegen_wasmtime_import!(
"*.wit"
// TODO: implement async support
"!async-functions.wit"
// TODO: these use push/pull buffer which isn't implemented in the test
// generator just yet
"!wasi-next.wit"
"!host.wit"
);
}
mod async_tests {
mod not_async {
wit_bindgen_wasmtime::export!({
src["x"]: "foo: func()",
async: ["bar"],
});
struct Me;
impl x::X for Me {
fn foo(&mut self) {}
}
}
mod one_async {
wit_bindgen_wasmtime::export!({
src["x"]: "
foo: func() -> list<u8>
bar: func()
",
async: ["bar"],
});
struct Me;
#[wit_bindgen_wasmtime::async_trait]
impl x::X for Me {
fn foo(&mut self) -> Vec<u8> {
Vec::new()
}
async fn bar(&mut self) {}
}
}
mod one_async_export {
wit_bindgen_wasmtime::import!({
src["x"]: "
foo: func(x: list<string>)
bar: func()
",
async: ["bar"],
});
}
mod resource_with_none_async {
wit_bindgen_wasmtime::export!({
src["x"]: "
resource y {
z: func() -> string
}
",
async: [],
});
}
}
mod custom_errors {
wit_bindgen_wasmtime::export!({
src["x"]: "
foo: func()
bar: func() -> expected<unit, u32>
enum errno {
bad1,
bad2,
}
baz: func() -> expected<u32, errno>
",
custom_error: true,
});
}