use crate::ir::idents_lint;
use proc_macro2::TokenStream as TokenStream2;
pub struct InkTest {
pub item_fn: syn::ItemFn,
}
impl TryFrom<syn::ItemFn> for InkTest {
type Error = syn::Error;
fn try_from(item_fn: syn::ItemFn) -> Result<Self, Self::Error> {
idents_lint::ensure_no_ink_identifiers(&item_fn)?;
Ok(Self { item_fn })
}
}
impl InkTest {
pub fn new(attr: TokenStream2, input: TokenStream2) -> Result<Self, syn::Error> {
if !attr.is_empty() {
return Err(format_err_spanned!(
attr,
"unexpected attribute input for ink! test definition"
))
}
let item_fn = syn::parse2::<syn::ItemFn>(input)?;
InkTest::try_from(item_fn)
}
}