use std::io;
use thistrace::{traceable, HasTrace};
#[traceable]
#[derive(thiserror::Error, Debug)]
enum Error<T>
where
T: std::fmt::Debug,
{
#[error("io")]
Io(#[from] io::Error),
#[error("marker")]
#[allow(dead_code)]
Marker(T),
}
fn inner() -> Result<(), io::Error> {
Err(io::Error::new(io::ErrorKind::Other, "boom"))
}
fn outer() -> Result<(), Error<u8>> {
inner()?;
Ok(())
}
#[test]
fn generic_enum_from_captures_frame() {
let err = outer().unwrap_err();
let trace = err.trace().expect("trace should exist");
assert_eq!(trace.frames().len(), 1);
assert!(trace.frames()[0].file.ends_with("generics.rs"));
}