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