diff options
Diffstat (limited to 'vendor/thiserror-impl/src/fallback.rs')
| -rw-r--r-- | vendor/thiserror-impl/src/fallback.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/thiserror-impl/src/fallback.rs b/vendor/thiserror-impl/src/fallback.rs new file mode 100644 index 00000000..e9c429ba --- /dev/null +++ b/vendor/thiserror-impl/src/fallback.rs @@ -0,0 +1,32 @@ +use crate::expand::call_site_ident; +use proc_macro2::TokenStream; +use quote::quote; +use syn::DeriveInput; + +pub(crate) fn expand(input: &DeriveInput, error: syn::Error) -> TokenStream { + let ty = call_site_ident(&input.ident); + let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); + + let error = error.to_compile_error(); + + quote! { + #error + + #[allow(unused_qualifications)] + #[automatically_derived] + impl #impl_generics ::thiserror::__private::Error for #ty #ty_generics #where_clause + where + // Work around trivial bounds being unstable. + // https://github.com/rust-lang/rust/issues/48214 + for<'workaround> #ty #ty_generics: ::core::fmt::Debug, + {} + + #[allow(unused_qualifications)] + #[automatically_derived] + impl #impl_generics ::core::fmt::Display for #ty #ty_generics #where_clause { + fn fmt(&self, __formatter: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::unreachable!() + } + } + } +} |
