1#![doc = include_str!("../README.md")]
2#![warn(clippy::unused_trait_names, clippy::pedantic)]
3#![allow(
4 clippy::redundant_closure_for_method_calls,
5 clippy::enum_glob_use,
6 clippy::missing_errors_doc,
7 clippy::semicolon_if_nothing_returned,
8)]
9
10extern crate proc_macro;
11
12mod span;
13mod exts;
14mod kind;
15mod parse_iter;
16mod func_utils;
17
18pub use span::*;
19pub use exts::*;
20pub use kind::*;
21pub use parse_iter::*;
22pub use func_utils::*;
23
24#[macro_export]
28macro_rules! err {
29 ($msg:expr $(,)?) => { $crate::err!($msg, ::proc_macro::Span::call_site()) };
30 ($msg:expr , $span:expr $(,)?) => {
31 return $crate::err($msg, &$span)
32 };
33 (@($($f:tt)*) $($rest:tt)*) => {
34 $crate::err!(&::std::format!($($f)*) $($rest)*)
35 };
36}
37
38#[macro_export]
42macro_rules! rerr {
43 ($msg:expr $(,)?) => { $crate::rerr!($msg, ::proc_macro::Span::call_site()) };
44 ($msg:expr , $span:expr $(,)?) => {
45 return $crate::rerr($msg, &$span)
46 };
47 (@($($f:tt)*) $($rest:tt)*) => {
48 $crate::rerr!(&::std::format!($($f)*) $($rest)*)
49 };
50}