]>
git.proxmox.com Git - rustc.git/blob - vendor/derive_more/tests/error/nightly/derives_for_structs_with_backtrace.rs
5 assert
!(SimpleErr
.backtrace().is_none());
9 fn named_implicit_no_backtrace() {
10 derive_display
!(TestErr
);
11 #[derive(Default, Debug, Error)]
16 assert
!(TestErr
::default().backtrace().is_none());
20 fn named_implicit_backtrace_by_field_name() {
21 derive_display
!(TestErr
);
22 #[derive(Debug, Error)]
24 backtrace
: MyBacktrace
,
28 type MyBacktrace
= Backtrace
;
31 backtrace
: Backtrace
::force_capture(),
34 assert
!(err
.backtrace().is_some());
39 fn named_implicit_backtrace_by_field_type() {
40 derive_display
!(TestErr
);
41 #[derive(Debug, Error)]
43 implicit_backtrace
: Backtrace
,
48 implicit_backtrace
: Backtrace
::force_capture(),
51 assert
!(err
.backtrace().is_some());
52 assert_bt
!(==, err
, implicit_backtrace
);
56 fn named_explicit_no_backtrace_by_field_name() {
57 derive_display
!(TestErr
);
58 #[derive(Debug, Error)]
60 #[error(not(backtrace))]
61 backtrace
: MyBacktrace
,
65 type MyBacktrace
= Backtrace
;
68 backtrace
: Backtrace
::force_capture(),
76 fn named_explicit_no_backtrace_by_field_type() {
77 derive_display
!(TestErr
);
78 #[derive(Debug, Error)]
80 #[error(not(backtrace))]
81 implicit_backtrace
: Backtrace
,
86 implicit_backtrace
: Backtrace
::force_capture(),
94 fn named_explicit_backtrace() {
95 derive_display
!(TestErr
);
96 #[derive(Debug, Error)]
99 explicit_backtrace
: MyBacktrace
,
103 type MyBacktrace
= Backtrace
;
106 explicit_backtrace
: Backtrace
::force_capture(),
109 assert
!(err
.backtrace().is_some());
110 assert_bt
!(==, err
, explicit_backtrace
);
114 fn named_explicit_no_backtrace_redundant() {
115 derive_display
!(TestErr
);
116 #[derive(Debug, Error)]
118 #[error(not(backtrace))]
119 not_backtrace
: MyBacktrace
,
120 #[error(not(backtrace))]
124 type MyBacktrace
= Backtrace
;
127 not_backtrace
: Backtrace
::force_capture(),
135 fn named_explicit_backtrace_by_field_name_redundant() {
136 derive_display
!(TestErr
);
137 #[derive(Debug, Error)]
140 backtrace
: MyBacktrace
,
144 type MyBacktrace
= Backtrace
;
147 backtrace
: Backtrace
::force_capture(),
150 assert
!(err
.backtrace().is_some());
155 fn named_explicit_backtrace_by_field_type_redundant() {
156 derive_display
!(TestErr
);
157 #[derive(Debug, Error)]
160 implicit_backtrace
: Backtrace
,
165 implicit_backtrace
: Backtrace
::force_capture(),
168 assert
!(err
.backtrace().is_some());
169 assert_bt
!(==, err
, implicit_backtrace
);
173 fn named_explicit_supresses_implicit() {
174 derive_display
!(TestErr
);
175 #[derive(Debug, Error)]
178 not_backtrace
: MyBacktrace
,
179 backtrace
: Backtrace
,
183 type MyBacktrace
= Backtrace
;
186 not_backtrace
: Backtrace
::force_capture(),
187 backtrace
: (|| Backtrace
::force_capture())(), // ensure backtraces are different
191 assert
!(err
.backtrace().is_some());
192 assert_bt
!(==, err
, not_backtrace
);
197 fn unnamed_implicit_no_backtrace() {
198 derive_display
!(TestErr
);
199 #[derive(Default, Debug, Error)]
200 struct TestErr(i32, i32);
202 assert
!(TestErr
::default().backtrace().is_none());
206 fn unnamed_implicit_backtrace() {
207 derive_display
!(TestErr
);
208 #[derive(Debug, Error)]
209 struct TestErr(Backtrace
, i32, i32);
211 let err
= TestErr(Backtrace
::force_capture(), 0, 0);
212 assert
!(err
.backtrace().is_some());
213 assert_bt
!(==, err
, 0);
217 fn unnamed_explicit_no_backtrace() {
218 derive_display
!(TestErr
);
219 #[derive(Debug, Error)]
220 struct TestErr(#[error(not(backtrace))] Backtrace, i32);
222 assert
!(TestErr(Backtrace
::force_capture(), 0).backtrace().is_none());
226 fn unnamed_explicit_backtrace() {
227 derive_display
!(TestErr
);
228 #[derive(Debug, Error)]
229 struct TestErr(#[error(backtrace)] MyBacktrace, i32, i32);
231 type MyBacktrace
= Backtrace
;
233 let err
= TestErr(Backtrace
::force_capture(), 0, 0);
234 assert
!(err
.backtrace().is_some());
235 assert_bt
!(==, err
, 0);
239 fn unnamed_explicit_no_backtrace_redundant() {
240 derive_display
!(TestErr
);
241 #[derive(Debug, Error)]
243 #[error(not(backtrace))] MyBacktrace,
244 #[error(not(backtrace))] i32,
247 type MyBacktrace
= Backtrace
;
249 assert
!(TestErr(Backtrace
::force_capture(), 0).backtrace().is_none());
253 fn unnamed_explicit_backtrace_redundant() {
254 derive_display
!(TestErr
);
255 #[derive(Debug, Error)]
256 struct TestErr(#[error(backtrace)] Backtrace, i32, i32);
258 let err
= TestErr(Backtrace
::force_capture(), 0, 0);
259 assert
!(err
.backtrace().is_some());
260 assert_bt
!(==, err
, 0);
264 fn unnamed_explicit_supresses_implicit() {
265 derive_display
!(TestErr
);
266 #[derive(Debug, Error)]
267 struct TestErr(#[error(backtrace)] MyBacktrace, Backtrace, i32);
269 type MyBacktrace
= Backtrace
;
272 Backtrace
::force_capture(),
273 (|| Backtrace
::force_capture())(), // ensure backtraces are different
277 assert
!(err
.backtrace().is_some());
278 assert_bt
!(==, err
, 0);
279 assert_bt
!(!=, err
, 1);