use proc_macro2::{Ident, Span, TokenStream};
use quote::quote;
pub(crate) fn compile_error_str(msg: &str, span: Span) -> TokenStream {
let err_ident = Ident::new("compile_error", span);
quote! { #err_ident!(#msg); }
}
pub(crate) fn compile_error_ty(msg: &str, span: Span) -> TokenStream {
let err_ident = Ident::new("compile_error", span);
quote! { #err_ident!(#msg) }
}
macro_rules! compile_err {
($($t:tt)*) => {
compile_error_str(&format!($($t)*), proc_macro2::Span::call_site())
};
}
pub(crate) use compile_err;
macro_rules! compile_err_at {
($span:expr, $($t:tt)*) => {
compile_error_str(&format!($($t)*), $span)
};
}
pub(crate) use compile_err_at;