1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/// Creates call site [`struct@syn::Ident`] using interpolation of runtime
/// expressions.
#[macro_export]
macro_rules! new_ident {
    ($fmt:expr, $($args:tt)*) => {
        ::syn::Ident::new(
            &format!($fmt, $($args)*),
            ::proc_macro2::Span::call_site(),
        )
    };
    ($fmt:expr) => {
        new_ident!($fmt,)
    };
}

/// Unconditionally causes parsing to fail with the given error message.
#[macro_export]
macro_rules! compile_error {
    ($fmt:expr, $($args:tt)*) => {
        return ::syn::parse::Error::new(
            ::proc_macro2::Span::call_site(),
            format!($fmt, $($args)*),
        )
        .to_compile_error()
        .into()
    };
    ($fmt:expr) => {
        compile_error!($fmt,)
    };
}