use impl_serde::serialize as serde_hex;
use quote::format_ident;
#[derive(scale::Encode, scale::Decode)]
pub enum EnforcedErrors {
#[codec(index = 1)]
CannotCallTraitMessage {
trait_ident: String,
message_ident: String,
message_selector: [u8; 4],
message_is_mut: bool,
},
}
impl EnforcedErrors {
fn into_ident(self) -> syn::Ident {
format_ident!(
"__ink_enforce_error_{}",
serde_hex::to_hex(&scale::Encode::encode(&self), false)
)
}
pub fn cannot_call_trait_message(
trait_ident: &syn::Ident,
message_ident: &syn::Ident,
message_selector: ir::Selector,
message_is_mut: bool,
) -> syn::Ident {
Self::CannotCallTraitMessage {
trait_ident: trait_ident.to_string(),
message_ident: message_ident.to_string(),
message_selector: message_selector.to_bytes(),
message_is_mut,
}
.into_ident()
}
}