proc_macro_tool/
lib.rs

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/// [`return err(msg [, span])`](err())
25///
26/// `err!(@(...))` like `err!(&format!(...))`
27#[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/// [`return rerr(msg [, span])`](rerr())
39///
40/// `err!(@(...))` like `err!(&format!(...))`
41#[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}