summaryrefslogtreecommitdiff
path: root/impl/src/fallback.rs
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-11-15 20:18:36 +0000
committerJohn Turner <jturner.usa@gmail.com>2025-11-15 20:18:36 +0000
commit6eba9cd92c295c5389944f6adda1f1e83b2cb008 (patch)
tree1150628bb9ff715ca3e6027637112f1ec3858139 /impl/src/fallback.rs
downloadgentoo-utils-6eba9cd92c295c5389944f6adda1f1e83b2cb008.tar.gz
Squashed 'subprojects/thiserror/' content from commit 247eab5
git-subtree-dir: subprojects/thiserror git-subtree-split: 247eab5d79e27ad28859afdf8bc600a4242829b7
Diffstat (limited to 'impl/src/fallback.rs')
-rw-r--r--impl/src/fallback.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/impl/src/fallback.rs b/impl/src/fallback.rs
new file mode 100644
index 0000000..9914aa5
--- /dev/null
+++ b/impl/src/fallback.rs
@@ -0,0 +1,33 @@
+use crate::expand::call_site_ident;
+use crate::private;
+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!()
+ }
+ }
+ }
+}