• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #![cfg_attr(
2     thiserror_nightly_testing,
3     feature(error_generic_member_access, provide_any)
4 )]
5 
6 #[cfg(thiserror_nightly_testing)]
7 pub mod structs {
8     use std::backtrace::Backtrace;
9     use thiserror::Error;
10 
11     #[derive(Error, Debug)]
12     #[error("...")]
13     pub struct OptSourceNoBacktrace {
14         #[source]
15         source: Option<anyhow::Error>,
16     }
17 
18     #[derive(Error, Debug)]
19     #[error("...")]
20     pub struct OptSourceAlwaysBacktrace {
21         #[source]
22         source: Option<anyhow::Error>,
23         backtrace: Backtrace,
24     }
25 
26     #[derive(Error, Debug)]
27     #[error("...")]
28     pub struct NoSourceOptBacktrace {
29         #[backtrace]
30         backtrace: Option<Backtrace>,
31     }
32 
33     #[derive(Error, Debug)]
34     #[error("...")]
35     pub struct AlwaysSourceOptBacktrace {
36         source: anyhow::Error,
37         #[backtrace]
38         backtrace: Option<Backtrace>,
39     }
40 
41     #[derive(Error, Debug)]
42     #[error("...")]
43     pub struct OptSourceOptBacktrace {
44         #[source]
45         source: Option<anyhow::Error>,
46         #[backtrace]
47         backtrace: Option<Backtrace>,
48     }
49 }
50 
51 #[cfg(thiserror_nightly_testing)]
52 pub mod enums {
53     use std::backtrace::Backtrace;
54     use thiserror::Error;
55 
56     #[derive(Error, Debug)]
57     pub enum OptSourceNoBacktrace {
58         #[error("...")]
59         Test {
60             #[source]
61             source: Option<anyhow::Error>,
62         },
63     }
64 
65     #[derive(Error, Debug)]
66     pub enum OptSourceAlwaysBacktrace {
67         #[error("...")]
68         Test {
69             #[source]
70             source: Option<anyhow::Error>,
71             backtrace: Backtrace,
72         },
73     }
74 
75     #[derive(Error, Debug)]
76     pub enum NoSourceOptBacktrace {
77         #[error("...")]
78         Test {
79             #[backtrace]
80             backtrace: Option<Backtrace>,
81         },
82     }
83 
84     #[derive(Error, Debug)]
85     pub enum AlwaysSourceOptBacktrace {
86         #[error("...")]
87         Test {
88             source: anyhow::Error,
89             #[backtrace]
90             backtrace: Option<Backtrace>,
91         },
92     }
93 
94     #[derive(Error, Debug)]
95     pub enum OptSourceOptBacktrace {
96         #[error("...")]
97         Test {
98             #[source]
99             source: Option<anyhow::Error>,
100             #[backtrace]
101             backtrace: Option<Backtrace>,
102         },
103     }
104 }
105 
106 #[test]
107 #[cfg_attr(not(thiserror_nightly_testing), ignore)]
test_option()108 fn test_option() {}
109