delete GuestErrorConversion from docs, tests

This commit is contained in:
Pat Hickey
2021-03-23 22:20:29 -07:00
parent f74b0291ad
commit 1c4af27f2d
15 changed files with 16 additions and 66 deletions

View File

@@ -113,17 +113,6 @@ use syn::parse_macro_input;
/// } /// }
/// } /// }
/// ///
/// /// The `types::GuestErrorConversion` trait is also generated with a method for
/// /// each type used in the `error` position. This trait allows wiggle-generated
/// /// code to convert a `wiggle::GuestError` into the right error type. The trait
/// /// must be implemented for the user's ctx type.
///
/// impl types::GuestErrorConversion for YourCtxType {
/// fn into_errno(&self, _e: wiggle::GuestError) -> types::Errno {
/// unimplemented!()
/// }
/// }
///
/// /// If you specify a `error` mapping to the macro, you must implement the /// /// If you specify a `error` mapping to the macro, you must implement the
/// /// `types::UserErrorConversion` for your ctx type as well. This trait gives /// /// `types::UserErrorConversion` for your ctx type as well. This trait gives
/// /// you an opportunity to store or log your rich error type, while returning /// /// you an opportunity to store or log your rich error type, while returning

View File

@@ -27,10 +27,6 @@ witx_literal: "
errors: { errno => RichError }, errors: { errno => RichError },
}); });
// The impl of GuestErrorConversion works just like in every other test where
// we have a single error type with witx `$errno` with the success called `$ok`
impl_errno!(types::Errno, types::GuestErrorConversion);
/// When the `errors` mapping in witx is non-empty, we need to impl the /// When the `errors` mapping in witx is non-empty, we need to impl the
/// types::UserErrorConversion trait that wiggle generates from that mapping. /// types::UserErrorConversion trait that wiggle generates from that mapping.
impl<'a> types::UserErrorConversion for WasiCtx<'a> { impl<'a> types::UserErrorConversion for WasiCtx<'a> {

View File

@@ -347,18 +347,11 @@ impl<'a> WasiCtx<'a> {
// with these errors. We just push them to vecs. // with these errors. We just push them to vecs.
#[macro_export] #[macro_export]
macro_rules! impl_errno { macro_rules! impl_errno {
( $errno:ty, $convert:path ) => { ( $errno:ty ) => {
impl wiggle::GuestErrorType for $errno { impl wiggle::GuestErrorType for $errno {
fn success() -> $errno { fn success() -> $errno {
<$errno>::Ok <$errno>::Ok
} }
} }
impl<'a> $convert for WasiCtx<'a> {
fn into_errno(&self, e: wiggle::GuestError) -> $errno {
eprintln!("GuestError: {:?}", e);
self.guest_errors.borrow_mut().push(e);
<$errno>::InvalidArg
}
}
}; };
} }

View File

@@ -6,7 +6,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/atoms.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/atoms.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> atoms::Atoms for WasiCtx<'a> { impl<'a> atoms::Atoms for WasiCtx<'a> {
fn int_float_args(&self, an_int: u32, an_float: f32) -> Result<(), types::Errno> { fn int_float_args(&self, an_int: u32, an_float: f32) -> Result<(), types::Errno> {

View File

@@ -12,7 +12,7 @@ wiggle::from_witx!({
} }
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
#[wiggle::async_trait(?Send)] #[wiggle::async_trait(?Send)]
impl<'a> atoms::Atoms for WasiCtx<'a> { impl<'a> atoms::Atoms for WasiCtx<'a> {

View File

@@ -26,9 +26,7 @@ mod convert_just_errno {
errors: { errno => RichError }, errors: { errno => RichError },
}); });
// The impl of GuestErrorConversion works just like in every other test where impl_errno!(types::Errno);
// we have a single error type with witx `$errno` with the success called `$ok`
impl_errno!(types::Errno, types::GuestErrorConversion);
/// When the `errors` mapping in witx is non-empty, we need to impl the /// When the `errors` mapping in witx is non-empty, we need to impl the
/// types::UserErrorConversion trait that wiggle generates from that mapping. /// types::UserErrorConversion trait that wiggle generates from that mapping.
@@ -104,7 +102,7 @@ mod convert_just_errno {
/// we use two distinct error types. /// we use two distinct error types.
mod convert_multiple_error_types { mod convert_multiple_error_types {
pub use super::convert_just_errno::RichError; pub use super::convert_just_errno::RichError;
use wiggle_test::WasiCtx; use wiggle_test::{impl_errno, WasiCtx};
/// Test that we can map multiple types of errors. /// Test that we can map multiple types of errors.
#[derive(Debug, thiserror::Error)] #[derive(Debug, thiserror::Error)]
@@ -135,27 +133,8 @@ mod convert_multiple_error_types {
errors: { errno => RichError, errno2 => AnotherRichError }, errors: { errno => RichError, errno2 => AnotherRichError },
}); });
// Can't use the impl_errno! macro as usual here because the conversion impl_errno!(types::Errno);
// trait ends up having two methods. impl_errno!(types::Errno2);
// We aren't going to execute this code, so the bodies are elided.
impl<'a> types::GuestErrorConversion for WasiCtx<'a> {
fn into_errno(&self, _e: wiggle::GuestError) -> types::Errno {
unimplemented!()
}
fn into_errno2(&self, _e: wiggle::GuestError) -> types::Errno2 {
unimplemented!()
}
}
impl wiggle::GuestErrorType for types::Errno {
fn success() -> types::Errno {
<types::Errno>::Ok
}
}
impl wiggle::GuestErrorType for types::Errno2 {
fn success() -> types::Errno2 {
<types::Errno2>::Ok
}
}
// The UserErrorConversion trait will also have two methods for this test. They correspond to // The UserErrorConversion trait will also have two methods for this test. They correspond to
// each member of the `errors` mapping. // each member of the `errors` mapping.

View File

@@ -7,7 +7,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/flags.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/flags.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> flags::Flags for WasiCtx<'a> { impl<'a> flags::Flags for WasiCtx<'a> {
fn configure_car( fn configure_car(

View File

@@ -8,7 +8,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/handles.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/handles.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> handle_examples::HandleExamples for WasiCtx<'a> { impl<'a> handle_examples::HandleExamples for WasiCtx<'a> {
fn fd_create(&self) -> Result<types::Fd, types::Errno> { fn fd_create(&self) -> Result<types::Fd, types::Errno> {

View File

@@ -7,7 +7,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/ints.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/ints.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> ints::Ints for WasiCtx<'a> { impl<'a> ints::Ints for WasiCtx<'a> {
fn cookie_cutter(&self, init_cookie: types::Cookie) -> Result<types::Bool, types::Errno> { fn cookie_cutter(&self, init_cookie: types::Cookie) -> Result<types::Bool, types::Errno> {

View File

@@ -6,7 +6,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/lists.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/lists.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> lists::Lists for WasiCtx<'a> { impl<'a> lists::Lists for WasiCtx<'a> {
fn reduce_excuses( fn reduce_excuses(

View File

@@ -6,7 +6,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/pointers.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/pointers.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> pointers::Pointers for WasiCtx<'a> { impl<'a> pointers::Pointers for WasiCtx<'a> {
fn pointers_and_enums<'b>( fn pointers_and_enums<'b>(

View File

@@ -6,7 +6,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/records.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/records.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> records::Records for WasiCtx<'a> { impl<'a> records::Records for WasiCtx<'a> {
fn sum_of_pair(&self, an_pair: &types::PairInts) -> Result<i64, types::Errno> { fn sum_of_pair(&self, an_pair: &types::PairInts) -> Result<i64, types::Errno> {

View File

@@ -6,7 +6,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/strings.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/strings.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
impl<'a> strings::Strings for WasiCtx<'a> { impl<'a> strings::Strings for WasiCtx<'a> {
fn hello_string(&self, a_string: &GuestPtr<str>) -> Result<u32, types::Errno> { fn hello_string(&self, a_string: &GuestPtr<str>) -> Result<u32, types::Errno> {

View File

@@ -6,7 +6,7 @@ wiggle::from_witx!({
witx: ["$CARGO_MANIFEST_DIR/tests/variant.witx"], witx: ["$CARGO_MANIFEST_DIR/tests/variant.witx"],
}); });
impl_errno!(types::Errno, types::GuestErrorConversion); impl_errno!(types::Errno);
// Avoid panics on overflow // Avoid panics on overflow
fn mult_lose_overflow(a: i32, b: u32) -> i32 { fn mult_lose_overflow(a: i32, b: u32) -> i32 {

View File

@@ -1,4 +1,4 @@
use wiggle::{GuestError, GuestErrorType, GuestPtr, GuestSlice}; use wiggle::{GuestErrorType, GuestPtr, GuestSlice};
use wiggle_test::WasiCtx; use wiggle_test::WasiCtx;
// This test file exists to make sure that the entire `wasi.witx` file can be // This test file exists to make sure that the entire `wasi.witx` file can be
@@ -31,13 +31,6 @@ impl GuestErrorType for types::Errno {
} }
} }
impl<'a> types::GuestErrorConversion for WasiCtx<'a> {
fn into_errno(&self, e: GuestError) -> types::Errno {
eprintln!("GuestError {:?}", e);
types::Errno::Badf
}
}
impl<'a> crate::wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx<'a> { impl<'a> crate::wasi_snapshot_preview1::WasiSnapshotPreview1 for WasiCtx<'a> {
fn args_get(&self, _argv: &GuestPtr<GuestPtr<u8>>, _argv_buf: &GuestPtr<u8>) -> Result<()> { fn args_get(&self, _argv: &GuestPtr<GuestPtr<u8>>, _argv_buf: &GuestPtr<u8>) -> Result<()> {
unimplemented!("args_get") unimplemented!("args_get")