1 | #![allow ( |
2 | clippy::blocks_in_if_conditions, |
3 | clippy::cast_lossless, |
4 | clippy::cast_possible_truncation, |
5 | clippy::manual_find, |
6 | clippy::manual_map, |
7 | clippy::map_unwrap_or, |
8 | clippy::needless_pass_by_value, |
9 | clippy::option_if_let_else, |
10 | clippy::range_plus_one, |
11 | clippy::single_match_else, |
12 | clippy::too_many_lines, |
13 | clippy::wrong_self_convention |
14 | )] |
15 | |
16 | extern crate proc_macro; |
17 | |
18 | mod ast; |
19 | mod attr; |
20 | mod expand; |
21 | mod fmt; |
22 | mod generics; |
23 | mod prop; |
24 | mod valid; |
25 | |
26 | use proc_macro::TokenStream; |
27 | use syn::{parse_macro_input, DeriveInput}; |
28 | |
29 | #[proc_macro_derive (Error, attributes(backtrace, error, from, source))] |
30 | pub fn derive_error(input: TokenStream) -> TokenStream { |
31 | let input: DeriveInput = parse_macro_input!(input as DeriveInput); |
32 | expandTokenStream::derive(&input) |
33 | .unwrap_or_else(|err: Error| err.to_compile_error()) |
34 | .into() |
35 | } |
36 | |