diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-11-15 20:18:36 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-11-15 20:18:36 +0000 |
| commit | 6eba9cd92c295c5389944f6adda1f1e83b2cb008 (patch) | |
| tree | 1150628bb9ff715ca3e6027637112f1ec3858139 /impl/src/fallback.rs | |
| download | gentoo-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.rs | 33 |
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!() + } + } + } +} |
