summaryrefslogtreecommitdiff
path: root/vendor/thiserror-impl/src/fallback.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/thiserror-impl/src/fallback.rs')
-rw-r--r--vendor/thiserror-impl/src/fallback.rs32
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!()
+ }
+ }
+ }
+}