1 pub trait SpanError {
2     #[allow(non_snake_case)]
EXPECTED_Span_OR_ToTokensnull3     fn EXPECTED_Span_OR_ToTokens<D: std::fmt::Display>(&self, msg: D) -> syn::Error;
4 }
5 
6 pub trait ToTokensError {
7     #[allow(non_snake_case)]
EXPECTED_Span_OR_ToTokensnull8     fn EXPECTED_Span_OR_ToTokens<D: std::fmt::Display>(&self, msg: D) -> syn::Error;
9 }
10 
11 impl<T: quote::ToTokens> ToTokensError for T {
EXPECTED_Span_OR_ToTokensnull12     fn EXPECTED_Span_OR_ToTokens<D: std::fmt::Display>(&self, msg: D) -> syn::Error {
13         // Curb monomorphization from generating too many identical `new_spanned`.
14         syn::Error::new_spanned(self.to_token_stream(), msg)
15     }
16 }
17 
18 impl SpanError for proc_macro2::Span {
EXPECTED_Span_OR_ToTokensnull19     fn EXPECTED_Span_OR_ToTokens<D: std::fmt::Display>(&self, msg: D) -> syn::Error {
20         syn::Error::new(*self, msg)
21     }
22 }
23