Trap::I32Exit is a better name
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -2908,7 +2908,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "witx"
|
name = "witx"
|
||||||
version = "0.8.7"
|
version = "0.8.8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"diff",
|
"diff",
|
||||||
|
|||||||
@@ -717,7 +717,7 @@ impl<'a> WasiSnapshotPreview1 for WasiCtx {
|
|||||||
fn proc_exit(&self, status: types::Exitcode) -> wiggle::Trap {
|
fn proc_exit(&self, status: types::Exitcode) -> wiggle::Trap {
|
||||||
// Check that the status is within WASI's range.
|
// Check that the status is within WASI's range.
|
||||||
if status < 126 {
|
if status < 126 {
|
||||||
wiggle::Trap::I32(status as i32)
|
wiggle::Trap::I32Exit(status as i32)
|
||||||
} else {
|
} else {
|
||||||
wiggle::Trap::String("exit with invalid exit status outside of [0..126)".to_owned())
|
wiggle::Trap::String("exit with invalid exit status outside of [0..126)".to_owned())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -929,8 +929,15 @@ impl Pointee for str {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
/// A runtime-independent way for Wiggle to terminate WebAssembly execution.
|
||||||
|
/// Functions that are marked `(@witx noreturn)` will always return a Trap.
|
||||||
|
/// Other functions that want to Trap can do so via their `UserErrorConversion`
|
||||||
|
/// trait, which transforms the user's own error type into a `Result<abierror, Trap>`.
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub enum Trap {
|
pub enum Trap {
|
||||||
I32(i32),
|
/// A Trap which indicates an i32 (posix-style) exit code. Runtimes may have a
|
||||||
|
/// special way of dealing with this for WASI embeddings and otherwise.
|
||||||
|
I32Exit(i32),
|
||||||
|
/// Any other Trap is just an unstructured String, for reporting and debugging.
|
||||||
String(String),
|
String(String),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ fn generate_func(
|
|||||||
match result {
|
match result {
|
||||||
Ok(r) => Ok(r.into()),
|
Ok(r) => Ok(r.into()),
|
||||||
Err(wasmtime_wiggle::Trap::String(err)) => Err(wasmtime::Trap::new(err)),
|
Err(wasmtime_wiggle::Trap::String(err)) => Err(wasmtime::Trap::new(err)),
|
||||||
Err(wasmtime_wiggle::Trap::I32(err)) => Err(wasmtime::Trap::i32_exit(err)),
|
Err(wasmtime_wiggle::Trap::I32Exit(err)) => Err(wasmtime::Trap::i32_exit(err)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user