summaryrefslogtreecommitdiff
path: root/impl/src/lib.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/lib.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/lib.rs')
-rw-r--r--impl/src/lib.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/impl/src/lib.rs b/impl/src/lib.rs
new file mode 100644
index 0000000..25890f2
--- /dev/null
+++ b/impl/src/lib.rs
@@ -0,0 +1,55 @@
+#![allow(
+ clippy::blocks_in_conditions,
+ clippy::cast_lossless,
+ clippy::cast_possible_truncation,
+ clippy::enum_glob_use,
+ clippy::expl_impl_clone_on_copy, // https://github.com/rust-lang/rust-clippy/issues/15842
+ clippy::manual_find,
+ clippy::manual_let_else,
+ clippy::manual_map,
+ clippy::map_unwrap_or,
+ clippy::module_name_repetitions,
+ clippy::needless_pass_by_value,
+ clippy::range_plus_one,
+ clippy::single_match_else,
+ clippy::struct_field_names,
+ clippy::too_many_lines,
+ clippy::wrong_self_convention
+)]
+#![allow(unknown_lints, mismatched_lifetime_syntaxes)]
+
+extern crate proc_macro;
+
+mod ast;
+mod attr;
+mod expand;
+mod fallback;
+mod fmt;
+mod generics;
+mod prop;
+mod scan_expr;
+mod unraw;
+mod valid;
+
+use proc_macro::TokenStream;
+use proc_macro2::{Ident, Span};
+use quote::{ToTokens, TokenStreamExt as _};
+use syn::{parse_macro_input, DeriveInput};
+
+#[proc_macro_derive(Error, attributes(backtrace, error, from, source))]
+pub fn derive_error(input: TokenStream) -> TokenStream {
+ let input = parse_macro_input!(input as DeriveInput);
+ expand::derive(&input).into()
+}
+
+#[allow(non_camel_case_types)]
+struct private;
+
+impl ToTokens for private {
+ fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
+ tokens.append(Ident::new(
+ concat!("__private", env!("CARGO_PKG_VERSION_PATCH")),
+ Span::call_site(),
+ ));
+ }
+}