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
16extern crate proc_macro;
17
18mod ast;
19mod attr;
20mod expand;
21mod fmt;
22mod generics;
23mod prop;
24mod valid;
25
26use proc_macro::TokenStream;
27use syn::{parse_macro_input, DeriveInput};
28
29#[proc_macro_derive(Error, attributes(backtrace, error, from, source))]
30pub 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