mod item_fn;
mod item_foreign_mod;
mod item_record;
mod utils;
use crate::ast_types::MarineAst;
pub(crate) trait ParseMacroInput {
fn parse_macro_input(self) -> syn::Result<MarineAst>;
}
impl ParseMacroInput for syn::Item {
fn parse_macro_input(self) -> syn::Result<MarineAst> {
use syn::spanned::Spanned;
match self {
syn::Item::Fn(function) => function.parse_macro_input(),
syn::Item::ForeignMod(extern_mod) => extern_mod.parse_macro_input(),
syn::Item::Struct(item_struct) => item_struct.parse_macro_input(),
_ => Err(syn::Error::new(
self.span(),
"At now, #[marine] could be applied only to a function, extern block or struct",
)),
}
}
}