use ink_codegen::generate_code;
use ink_ir::{
marker::{
SelectorBytes,
SelectorId,
},
SelectorMacro,
};
use proc_macro2::TokenStream as TokenStream2;
use syn::Result;
pub fn generate_selector_id(input: TokenStream2) -> TokenStream2 {
match generate_selector_id_or_err(input) {
Ok(tokens) => tokens,
Err(err) => err.to_compile_error(),
}
}
pub fn generate_selector_id_or_err(input: TokenStream2) -> Result<TokenStream2> {
let selector = SelectorMacro::<SelectorId>::try_from(input)?;
Ok(generate_code(&selector))
}
pub fn generate_selector_bytes(input: TokenStream2) -> TokenStream2 {
match generate_selector_bytes_or_err(input) {
Ok(tokens) => tokens,
Err(err) => err.to_compile_error(),
}
}
pub fn generate_selector_bytes_or_err(input: TokenStream2) -> Result<TokenStream2> {
let selector = SelectorMacro::<SelectorBytes>::try_from(input)?;
Ok(generate_code(&selector))
}