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