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