codama_syn_helpers/extensions/
to_tokens.rs1use 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}