elrond-wasm-derive 0.3.2

Elrond WebAssembly smart contract API procedural macros
Documentation

use super::parse_attr::*;

#[derive(Clone, Debug)]
pub struct MethodArg {
    pub index: i32,
    pub pat: syn::Pat,
    pub ty: syn::Type,
    pub is_callback_arg: bool,
    pub metadata: ArgMetadata
}

#[derive(Clone, Debug)]
pub enum ArgMetadata {
    Payment,
    Single,
    Multi(MultiAttribute),
}

pub fn generate_arg_call_name(arg: &MethodArg) -> proc_macro2::TokenStream {
    let pat = &arg.pat;
    match &arg.ty {                
        syn::Type::Path(_) | syn::Type::Array(_) => quote!{ #pat },
        syn::Type::Reference(_) => quote!{ &#pat },
        other_arg => panic!("Unsupported argument type {:?} in generate_arg_call_name", other_arg),
    }
}