Sha256: f2f04f11bf8a709eddb1c68f113cda0c2be87e56800d6b9d991bedd545b4642f

Contents?: true

Size: 1.43 KB

Versions: 38

Compression:

Stored size: 1.43 KB

Contents

use std::error::Error as StdError;
use std::io;
use thiserror::Error;

#[derive(Error, Debug)]
#[error("implicit source")]
pub struct ImplicitSource {
    source: io::Error,
}

#[derive(Error, Debug)]
#[error("explicit source")]
pub struct ExplicitSource {
    source: String,
    #[source]
    io: io::Error,
}

#[derive(Error, Debug)]
#[error("boxed source")]
pub struct BoxedSource {
    #[source]
    source: Box<dyn StdError + Send + 'static>,
}

#[test]
fn test_implicit_source() {
    let io = io::Error::new(io::ErrorKind::Other, "oh no!");
    let error = ImplicitSource { source: io };
    error.source().unwrap().downcast_ref::<io::Error>().unwrap();
}

#[test]
fn test_explicit_source() {
    let io = io::Error::new(io::ErrorKind::Other, "oh no!");
    let error = ExplicitSource {
        source: String::new(),
        io,
    };
    error.source().unwrap().downcast_ref::<io::Error>().unwrap();
}

#[test]
fn test_boxed_source() {
    let source = Box::new(io::Error::new(io::ErrorKind::Other, "oh no!"));
    let error = BoxedSource { source };
    error.source().unwrap().downcast_ref::<io::Error>().unwrap();
}

macro_rules! error_from_macro {
    ($($variants:tt)*) => {
        #[derive(Error)]
        #[derive(Debug)]
        pub enum MacroSource {
            $($variants)*
        }
    }
}

// Test that we generate impls with the proper hygiene
#[rustfmt::skip]
error_from_macro! {
    #[error("Something")]
    Variant(#[from] io::Error)
}

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
wasmtime-29.0.0 ./ext/cargo-vendor/thiserror-1.0.69/tests/test_source.rs
wasmtime-28.0.0 ./ext/cargo-vendor/thiserror-1.0.69/tests/test_source.rs
wasmtime-27.0.0 ./ext/cargo-vendor/thiserror-1.0.69/tests/test_source.rs
wasmtime-26.0.0 ./ext/cargo-vendor/thiserror-1.0.65/tests/test_source.rs
wasmtime-25.0.2 ./ext/cargo-vendor/thiserror-1.0.63/tests/test_source.rs
wasmtime-25.0.1 ./ext/cargo-vendor/thiserror-1.0.63/tests/test_source.rs
wasmtime-25.0.0 ./ext/cargo-vendor/thiserror-1.0.63/tests/test_source.rs
wasmtime-24.0.0 ./ext/cargo-vendor/thiserror-1.0.63/tests/test_source.rs
wasmtime-23.0.2 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-22.0.0 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-21.0.1 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-20.0.2 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-20.0.0 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-18.0.3 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-17.0.1 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-17.0.0 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-16.0.0 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-15.0.1 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-15.0.0 ./ext/cargo-vendor/thiserror-1.0.56/tests/test_source.rs
wasmtime-14.0.4 ./ext/cargo-vendor/thiserror-1.0.50/tests/test_source.rs