@@ -67,12 +67,12 @@ fn impl_struct(input: Struct) -> TokenStream {
67
67
let source_provide = if type_is_option ( source_field. ty ) {
68
68
quote_spanned ! { source. span( ) =>
69
69
if let std:: option:: Option :: Some ( source) = & self . #source {
70
- source. provide( #demand) ;
70
+ source. as_dyn_error ( ) . provide( #demand) ;
71
71
}
72
72
}
73
73
} else {
74
74
quote_spanned ! { source. span( ) =>
75
- self . #source. provide( #demand) ;
75
+ self . #source. as_dyn_error ( ) . provide( #demand) ;
76
76
}
77
77
} ;
78
78
let self_provide = if source == backtrace {
@@ -89,8 +89,7 @@ fn impl_struct(input: Struct) -> TokenStream {
89
89
} )
90
90
} ;
91
91
quote ! {
92
- #[ allow( unused_imports) ]
93
- use std:: error:: Error as _;
92
+ use thiserror:: __private:: AsDynError ;
94
93
#source_provide
95
94
#self_provide
96
95
}
@@ -260,12 +259,12 @@ fn impl_enum(input: Enum) -> TokenStream {
260
259
let source_provide = if type_is_option ( source_field. ty ) {
261
260
quote_spanned ! { source. span( ) =>
262
261
if let std:: option:: Option :: Some ( source) = #varsource {
263
- source. provide( #demand) ;
262
+ source. as_dyn_error ( ) . provide( #demand) ;
264
263
}
265
264
}
266
265
} else {
267
266
quote_spanned ! { source. span( ) =>
268
- #varsource. provide( #demand) ;
267
+ #varsource. as_dyn_error ( ) . provide( #demand) ;
269
268
}
270
269
} ;
271
270
let self_provide = if type_is_option ( backtrace_field. ty ) {
@@ -285,8 +284,7 @@ fn impl_enum(input: Enum) -> TokenStream {
285
284
#source: #varsource,
286
285
..
287
286
} => {
288
- #[ allow( unused_imports) ]
289
- use std:: error:: Error as _;
287
+ use thiserror:: __private:: AsDynError ;
290
288
#source_provide
291
289
#self_provide
292
290
}
@@ -300,18 +298,17 @@ fn impl_enum(input: Enum) -> TokenStream {
300
298
let source_provide = if type_is_option ( source_field. ty ) {
301
299
quote_spanned ! { backtrace. span( ) =>
302
300
if let std:: option:: Option :: Some ( source) = #varsource {
303
- source. provide( #demand) ;
301
+ source. as_dyn_error ( ) . provide( #demand) ;
304
302
}
305
303
}
306
304
} else {
307
305
quote_spanned ! { backtrace. span( ) =>
308
- #varsource. provide( #demand) ;
306
+ #varsource. as_dyn_error ( ) . provide( #demand) ;
309
307
}
310
308
} ;
311
309
quote ! {
312
310
#ty:: #ident { #backtrace: #varsource, ..} => {
313
- #[ allow( unused_imports) ]
314
- use std:: error:: Error as _;
311
+ use thiserror:: __private:: AsDynError ;
315
312
#source_provide
316
313
}
317
314
}
0 commit comments