codama_syn_helpers/extensions/
to_tokens.rs

1use quote::ToTokens;
2use std::fmt::Display;
3
4pub trait ToTokensExtension<T: ToTokens> {
5    fn get_self(&self) -> &T;
6
7    fn error(&self, message: impl Display) -> syn::Error {
8        syn::Error::new_spanned(self.get_self(), message)
9    }
10}
11
12impl<T: ToTokens> ToTokensExtension<T> for T {
13    fn get_self(&self) -> &T {
14        self
15    }
16}
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21
22    #[test]
23    fn error() {
24        let path: syn::Path = syn::parse_quote! { foo::bar };
25        let error = path.error("expected a single segment");
26        assert_eq!(error.to_string(), "expected a single segment");
27    }
28}